Я обнаружил, что ответ Джона Стриклера не совсем оправдал мои ожидания. Как только предупреждение вызывается вторым щелчком в пределах двухсекундного окна, каждый последующий щелчок вызывает другое предупреждение, пока вы не подождите две секунды, прежде чем щелкнуть снова. Таким образом, в коде Джона тройной щелчок действует как два двойных щелчка, и я ожидаю, что он будет действовать как двойной щелчок, за которым следует один щелчок.
Я переработал его решение, чтобы функционировать таким образом и действовать так, чтобы мой разум мог лучше понять. Я уменьшил задержку с 2000 до 700, чтобы лучше имитировать то, что я чувствую, чтобы быть нормальной чувствительностью. Вот скрипка: http://jsfiddle.net/KpCwN/4/.
Спасибо за основание, Джон. Я надеюсь, что эта альтернативная версия будет полезна другим.
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
});
});