7

我正在尝试在 mousedown - up 事件的一个按钮上执行 2 种不同的功能。但它不起作用,因为我无法检测 mousedown 事件的时间。

var flag;  
$("#ClikerButton").mousedown(function(e){  
    //if mouse pressed more than 2 sec, then  
    // do func1 and set flag = true;  
         //else do nothing  
}).mouseup(function(e){  
//if flag == true, do nothing,  
//else do func2;  
});  
4

3 回答 3

7

您可以使用:

$(window).mousedown(function(e) {
    clearTimeout(this.downTimer);
    this.downTimer = setTimeout(function() {
        alert('mousedown > 2 sec');   
    }, 2000); 
}).mouseup(function(e) {
    clearTimeout(this.downTimer); 
});​

小提琴:http: //jsfiddle.net/simevidas/Pe9sq/2/

参考: 检测 mousedown 事件的时间

于 2012-05-02T07:00:33.773 回答
2

没有“jQuery”魔法,只有 JavaScript 计时器。

var pressTimer

$("a").mouseup(function(){
  clearTimeout(pressTimer)
  // Clear timeout
  return false;
}).mousedown(function(){
  // Set timeout
  pressTimer = window.setTimeout(function() { ... your code ...},1000)
  return false; 
});

这是参考链接https://stackoverflow.com/questions/2625210/long-press-in-javascript/2625240#2625240

于 2012-05-02T06:59:00.997 回答
1
var flag, flag2;
$("#ClikerButton").on({
    mousedown : function(){
       flag = new Date().getTime();
    },
    mouseup: function(){
       flag2 = new Date().getTime();
       var passed = flag2 - flag;
       console.log(passed); //time passed in milliseconds
    }
});​

小提琴

于 2012-05-02T07:01:51.667 回答