Okazało się, że odpowiedź Johna Stricklera nie do końca spełniła moje oczekiwania. Gdy alert zostanie uruchomiony przez drugie kliknięcie w dwusekundowym oknie, każde kolejne kliknięcie wyzwala kolejny alert do momentu odczekania dwóch sekund przed ponownym kliknięciem. Tak więc w przypadku kodu Johna potrójne kliknięcie działa jak dwa podwójne kliknięcia, w przypadku których spodziewałbym się, że będzie działać jak podwójne kliknięcie, po którym następuje jedno kliknięcie.
Przepracowałem jego rozwiązanie, aby działało w ten sposób i płynęło w sposób, który mój umysł może lepiej zrozumieć. Zmniejszyłem opóźnienie z 2000 do 700, aby lepiej zasymulować to, co czułbym jako normalną czułość. Oto skrzypce: http://jsfiddle.net/KpCwN/4/ .
Dzięki za fundację, John. Mam nadzieję, że ta alternatywna wersja będzie przydatna dla innych.
var DELAY = 700, clicks = 0, timer = null;
$(function(){
$("a").on("click", function(e){
clicks++; //count clicks
if(clicks === 1) {
timer = setTimeout(function() {
alert("Single Click"); //perform single-click action
clicks = 0; //after action performed, reset counter
}, DELAY);
} else {
clearTimeout(timer); //prevent single-click action
alert("Double Click"); //perform double-click action
clicks = 0; //after action performed, reset counter
}
})
.on("dblclick", function(e){
e.preventDefault(); //cancel system double-click event
});
});