2012-05-02 10 views
7

Próbuję wykonać 2 różne funkcje na jednym przycisku na zdarzenia mousedown - up. Ale to nie działa, ponieważ nie mogę wykryć czasu na mousedown wydarzeniu.Jak obliczyć czas podczas zdarzenia mousedown w jquery?

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

Odpowiedz

6

Można użyć:

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

Fiddle:http://jsfiddle.net/simevidas/Pe9sq/2/

referencyjny:Detecting time on mousedown event

+0

Dzięki za szybką odpowiedź. Teraz działa dobrze. Nie wiedziałem, że wydarzenie mousedown ma zmienną DownTimer. Proszę podać mi, jeśli są jakieś szczegóły dotyczące zmiennej downTimer oraz zmiennej upTimer, jeśli są dostępne. Podaj mi również kodowaną zmienną downTimer używaną behing ... –

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

Powiązane problemy