¿Hay algo en jquery que me permita diferenciar el comportamiento al hacer doble clic y al hacer un solo clic?
Cuando enlazo ambos al mismo elemento, solo se ejecuta el clic único.
¿Hay alguna forma de esperar un tiempo antes de la ejecución del clic único para ver si el usuario vuelve a hacer clic o no?
Gracias :)
jquery
jquery-selectors
Kritya
fuente
fuente
Respuestas:
Descubrí que la respuesta de John Strickler no cumplía con lo que esperaba. Una vez que la alerta se activa con un segundo clic dentro de la ventana de dos segundos, cada clic posterior activa otra alerta hasta que espere dos segundos antes de volver a hacer clic. Entonces, con el código de John, un triple clic actúa como dos dobles clics donde esperaría que actuara como un doble clic seguido de un solo clic.
He reelaborado su solución para que funcione de esta manera y fluya de una manera que mi mente pueda comprender mejor. Bajé el retardo de 2000 a 700 para simular mejor lo que sentiría como una sensibilidad normal. Aquí está el violín: http://jsfiddle.net/KpCwN/4/ .
Gracias por la fundación, John. Espero que esta versión alternativa sea útil para otros.
fuente
.on()
sobre ambos ahora$("document").on("click","a" function(e){
en su lugar en la línea 5. Esta construcción reemplaza eldelegate()
uso obsoleto . En lugar dedocument
, puede / debe usar cualquier objeto principala
del DOM en la medida de lo posible que persista durante el tiempo.La solución dada por "Nott Responding" parece disparar ambos eventos, haga clic y haga doble clic cuando se haga doble clic. Sin embargo, creo que apunta en la dirección correcta.
Hice un pequeño cambio, este es el resultado:
Intentalo
http://jsfiddle.net/calterras/xmmo3esg/
fuente
Claro, vincule a dos manipuladores, uno a
click
y otro adblclick
. Cree una variable que se incremente con cada clic. luego se reinicia después de un retraso establecido. Dentro de la función setTimeout puedes hacer algo ...fuente
Probablemente podría escribir su propia implementación personalizada de click / dblclick para que espere un clic adicional. No veo nada en las funciones principales de jQuery que lo ayuden a lograr esto.
Cita de .dblclick () en el sitio de jQuery
No es aconsejable vincular controladores a los eventos click y dblclick para el mismo elemento. La secuencia de eventos desencadenados varía de un navegador a otro, algunos reciben dos eventos de clic antes del dblclick y otros solo uno. La sensibilidad del doble clic (tiempo máximo entre los clics que se detecta como un doble clic) puede variar según el sistema operativo y el navegador, y a menudo es configurable por el usuario.
fuente
Mira el siguiente código
La demostración va aquí http://jsfiddle.net/cB484/
fuente
Escribí un complemento de jQuery que también permite delegar los eventos de clic y dblclick
fuente
$("body").multipleClicks('#mySelector', function(){ /* do something on click */},function(){/* do something on doubleclick */},300);
fuente
Estoy implementando esta solución simple, http://jsfiddle.net/533135/VHkLR/5/
código html
código de secuencia de comandos
no es mucho laggy
fuente
Esta solución funciona para mi
fuente
Hice algunos cambios en las respuestas anteriores aquí, que todavía funcionan muy bien: http://jsfiddle.net/arondraper/R8cDR/
fuente
Y finalmente usamos as.
fuente
Igual que la respuesta anterior, pero permite un triple clic. (Retraso 500) http://jsfiddle.net/luenwarneke/rV78Y/1/
fuente
Este es un método que puede hacer usando el JavaScript básico, que funciona para mí:
fuente
A continuación se muestra mi enfoque simple del problema.
Función JQuery:
Implementación:
Inspeccione el elemento en el que se hizo clic en Firefox / Chrome para ver que los clics de datos suben y bajan a medida que hace clic, ajuste el tiempo (1000) para que se adapte.
fuente