Comment jQuery peut-il être utilisé pour gérer la timer en clic, séparation de dblclick

J’utilise jQueryFileTree à l’ adresse http://abeautifulsite.net/notebook/58 et je souhaite faire la distinction entre les événements dblclick et click, car un clic est toujours déclenché par un dblclick.

Googler about est une technique dans laquelle le clic est géré par une timer qui se déclenche lorsqu’un clic de bouton ne l’annule pas.

Existe-t-il un moyen d’utiliser cela de manière élégante avec jQuery et l’exemple jQuery?

Vous pouvez utiliser setTimeout() et clearTimeout() pour réaliser la fonctionnalité du minuteur:

 var timeout; var delay = 500; // Delay in milliseconds $("...") .click(function() { timeout = setTimeout(function() { // This inner function is called after the delay // to handle the 'click-only' event. alert('Click'); timeout = null; }, delay) } .dblclick(function() { if (timeout) { // Clear the timeout since this is a double-click and we don't want // the 'click-only' code to run. clearTimeout(timeout); timeout = null; } // Double-click handling code goes here. alert('Double-click'); } ; 

jQuery Sparkle fournit une solution élégante et propre pour cela, en implémentant un événement personnalisé en un clic. En faisant cela, vous pouvez l’utiliser comme n’importe quel autre événement, donc:

 $('#el').singleclick(function(){}); // or event $('#el').bind('singleclick', function(){}); 

Il fournit également des événements personnalisés pour les derniers et premiers clics d’une série de clics. Et l’événement personnalisé lastclick transmet en réalité le nombre de clics! Pour que tu puisses faire ça!

 $('#el').lastclick(function(event,clicks){ if ( clicks === 3 ) alert('Tripple Click!'); }); 

Vous pouvez trouver la démo appropriée illustrant ce que je viens de dire ici et le code source permettant de définir l’événement personnalisé ici . Il est open source sous licence AGPL, vous pouvez donc vous procurer tout ce dont vous avez besoin, sans souci! 🙂 Il est également activement développé au jour le jour afin que vous ne manquiez jamais d’assistance.

Mais le plus important, c’est un cadre DRY Plugin / Effect qui vous permet de développer des plugins et des extensions beaucoup plus facilement. J’espère donc que cela aidera à atteindre cet objective!

Regardez le code suivant

 $("#clickMe").click(function (e) { var $this = $(this); if ($this.hasClass('clicked')){ alert("Double click"); //here is your code for double click return; }else{ $this.addClass('clicked'); //your code for single click setTimeout(function() { $this.removeClass('clicked'); },500); }//end of else }); 

La démo va ici http://jsfiddle.net/cB484/