Descobri que a resposta de John Strickler não fez exatamente o que eu esperava. Depois que o alerta é disparado por um segundo clique na janela de dois segundos, cada clique subsequente dispara outro alerta até que você espere dois segundos antes de clicar novamente. Assim, com o código de John, um clique triplo atua como dois cliques duplos, onde eu esperaria que atuasse como um clique duplo seguido por um único clique.
Retrabalhei sua solução para funcionar dessa maneira e fluir de uma forma que minha mente possa compreender melhor. Eu diminuí o atraso de 2.000 para 700 para simular melhor o que eu consideraria uma sensibilidade normal. Aqui está o violino: http://jsfiddle.net/KpCwN/4/ .
Obrigado pela fundação, John. Espero que esta versão alternativa seja útil para outras pessoas.
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
});
});