2012-05-02 28 views
7

我想在mousedown - up事件上的一个按钮上做2个不同的功能。 但它不工作,因为我无法检测到mousedown事件的时间。如何计算jouery中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; 
}); 

回答

6

您可以使用:

$(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/

参考:Detecting time on mousedown event

+0

感谢您的快速回复。现在工作正常。我不知道mousedown事件有downTimer变量。如果有更多downTimer变量的详细信息以及upTimer变量(如果可用),请提供给我。还提供了使用behing downTimer变量的编码... –

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 
    } 
});​ 

FIDDLE