Tengo un latido que aparece cuando un usuario hace clic en un enlace.
El problema es que se puede hacer clic en ese mismo enlace y arrastrarlo para reorganizarlo. En este caso, no necesitaría que apareciera el palpitante. Solo necesita aparecer si realmente está esperando para ir a alguna parte.
¿Cómo puedo, con jQuery, crear un detector de eventos que solo permita que aparezca un palpitante si es un clic a través de un enlace , y no un clic y arrastrar?
Respuestas:
En mousedown, comience a establecer el estado, si el evento mousemove se activa, regístrelo, finalmente en mouseup, verifique si el mouse se movió. Si se movió, lo hemos estado arrastrando. Si no nos hemos movido, es un clic.
Aquí hay una demostración: http://jsfiddle.net/W7tvD/1399/
fuente
mousemove
se seguirán disparando al menos una vez incluso sin ningún movimiento, así que lo cambié para incrementar la variable en el movimiento y luego verifiqué un cierto umbral enmouseup
jsfiddle.net/W7tvD/1649 Funciona como un encanto para mí ahora, ¡gracias!Por alguna razón, las soluciones anteriores no me funcionaron. Fui con lo siguiente:
Puede ajustar el límite de distancia a lo que quiera, o incluso llevarlo hasta cero.
fuente
sqrt
no es lento y no afectará a la UX, ni siquiera si lo hiciste cientos de veces.¡Con jQuery UI simplemente haz esto!
fuente
Esta solución utiliza las funciones "on" y "off" para vincular y desvincular un evento mousemove (vincular y desvincular están en desuso). También puede detectar el cambio en las posiciones xey del mouse entre dos eventos mousemove.
fuente
Pruebe esto: muestra cuándo está el estado 'arrastrado'. ;) enlace de violín
fuente
Me desvié de la respuesta aceptada para ejecutar solo cuando el clic se mantiene presionado y arrastrado .
Mi función se estaba ejecutando cuando no estaba presionando el mouse. Aquí está el código actualizado si también desea esta funcionalidad:
fuente
Para esta forma más sencilla es tocar inicio, tocar mover y tocar final. Eso funciona tanto para PC como para dispositivos táctiles, solo compruébalo en la documentación de jquery y espero que esta sea la mejor solución para ti. buena suerte
fuente
Complemento jQuery basado en la respuesta de Simen Echholt. Lo llamé clic único.
En uso:
^^
fuente
Asegúrese de establecer el atributo arrastrable del elemento en falso para que no tenga efectos secundarios al escuchar los eventos del mouseup:
Entonces, puedes usar jQuery:
fuente
Tienes que configurar un temporizador. Cuando se agote el tiempo del temporizador, encienda el vibrador y registre el clic. Cuando se produce el arrastre, borre el temporizador para que nunca se complete.
fuente
Si está utilizando jQueryUI, hay un evento onDrag. Si no es así, adjunte su oyente a mouseup (), no haga clic en ().
fuente
fuente
No tiene que configurar la variable, solo puede configurar si se está moviendo en el atributo de datos
fuente
Necesitaba una función que siempre realizara un seguimiento de la posición del mouse y detectara el arrastre hacia la izquierda, derecha, arriba o abajo. Tampoco se activa al hacer clic, pero necesita un movimiento mínimo de 15px
fuente