Y a-t-il quelque chose dans jquery qui me permettrait de faire la différence entre le comportement au double clic et au simple clic?
Lorsque je lie les deux au même élément, seul le simple clic est exécuté.
Existe-t-il un moyen d'attendre un certain temps avant l'exécution du simple clic pour voir si l'utilisateur clique à nouveau ou non?
Merci :)
jquery
jquery-selectors
Kritya
la source
la source
Réponses:
J'ai trouvé que la réponse de John Strickler ne répondait pas tout à fait à mes attentes. Une fois l'alerte déclenchée par un deuxième clic dans la fenêtre de deux secondes, chaque clic suivant déclenche une autre alerte jusqu'à ce que vous attendiez deux secondes avant de cliquer à nouveau. Donc, avec le code de John, un triple clic agit comme deux doubles clics où je m'attendrais à ce qu'il agisse comme un double clic suivi d'un simple clic.
J'ai retravaillé sa solution pour qu'elle fonctionne de cette manière et qu'elle coule d'une manière que mon esprit puisse mieux comprendre. J'ai baissé le délai de 2000 à 700 pour mieux simuler ce que je ressentirais comme une sensibilité normale. Voici le violon: http://jsfiddle.net/KpCwN/4/ .
Merci pour la fondation, John. J'espère que cette version alternative sera utile aux autres.
la source
.on()
sur les deux maintenant$("document").on("click","a" function(e){
plutôt à la ligne 5. Cette construction remplace l'delegate()
utilisation obsolète . Au lieu de cela,document
vous pouvez / devriez utiliser n'importe quel objet parenta
du DOM dans la mesure du possible qui persiste dans le temps.La solution donnée par "Nott Responding" semble déclencher les deux événements, click et dblclick lors d'un double clic. Cependant, je pense que cela va dans la bonne direction.
J'ai fait un petit changement, voici le résultat:
Essayez-le
http://jsfiddle.net/calterras/xmmo3esg/
la source
Bien sûr, liez deux gestionnaires, l'un à
click
et l'autre àdblclick
. Créez une variable qui s'incrémente à chaque clic. puis se réinitialise après un délai défini. Dans la fonction setTimeout, vous pouvez faire quelque chose ...la source
Vous pourriez probablement écrire votre propre implémentation personnalisée de click / dblclick pour qu'elle attende un clic supplémentaire. Je ne vois rien dans les fonctions de base de jQuery qui vous aiderait à atteindre cet objectif.
Citation de .dblclick () sur le site jQuery
Il est déconseillé de lier les gestionnaires aux événements click et dblclick pour le même élément. La séquence des événements déclenchés varie d'un navigateur à l'autre, certains recevant deux événements de clic avant le dblclick et d'autres un seul. La sensibilité du double-clic (temps maximum entre les clics détecté comme un double-clic) peut varier selon le système d'exploitation et le navigateur, et est souvent configurable par l'utilisateur.
la source
Regardez le code suivant
La démo va ici http://jsfiddle.net/cB484/
la source
J'ai écrit un plugin jQuery qui permet également de déléguer les événements click et dblclick
la source
$("body").multipleClicks('#mySelector', function(){ /* do something on click */},function(){/* do something on doubleclick */},300);
la source
J'implémente cette solution simple, http://jsfiddle.net/533135/VHkLR/5/
code html
code de script
ce n'est pas très lent
la source
Cette solution fonctionne pour moi
la source
J'ai apporté quelques modifications aux réponses ci-dessus ici qui fonctionnent toujours très bien: http://jsfiddle.net/arondraper/R8cDR/
la source
Et enfin, nous utilisons comme.
la source
Identique à la réponse ci-dessus mais permet un triple clic. (Délai 500) http://jsfiddle.net/luenwarneke/rV78Y/1/
la source
C'est une méthode que vous pouvez utiliser en utilisant le JavaScript de base, qui fonctionne pour moi:
la source
Voici mon approche simple du problème.
Fonction JQuery:
La mise en oeuvre:
Inspectez l'élément sur lequel vous avez cliqué dans Firefox / Chrome pour voir les clics sur les données monter et descendre lorsque vous cliquez, ajustez l'heure (1000) en conséquence.
la source