Al no tener mouse ni puntero, el concepto de elementos que se ciernen sobre la pantalla no es realmente aplicable para dispositivos táctiles. Con muchos sitios web que dependen de JavaScript para navegar por eventos u otros fines, algunos dispositivos táctiles implementan el mouseenter
para disparar con un solo toque. Si un controlador de eventos también está vinculado al click
, esto solo se generará en un segundo toque en el elemento.Ignorar jQuery hover (mouseenter, mouseleave) en dispositivos táctiles
Dado que la función de jQuery hover()
utiliza internamente mouseenter
y mouseleave
, los elementos con ambos hover()
y click()
registros requiere dos grifos para activar este último . Para muchos casos de uso, esto es exactamente lo que deseará que suceda. Sin embargo, en aplicaciones donde el manejo de hover()
solo agrega énfasis (información sobre herramientas, resplandor, etc.) al elemento fijo, podría tener más sentido omitir el evento, todos los dispositivos táctiles, acercándose al controlador onclick
.
Sé cómo escuchar específicamente los eventos touchstart
y touchend
, lo que me permite personalizar la experiencia táctil del usuario. Esta es una solución válida para mi problema, pero espero que haya una manera "más fácil" de solucionarlo. Me imagino un método similar a hover()
en su firma, implementado solo de manera que solo se adjunta a los controladores de eventos proporcionados en dispositivos no táctiles.
¿Tiene jQuery ese método? Cualquier complemento? ¿O estoy pasando por alto algo aquí?
Comportamiento confirmó en el iPad, iPhone y algunos teléfonos Android.
Ejecutar este JsFiddle demo en un escritorio vs dispositivo táctil para ver lo que estoy hablando.
No estoy seguro de por qué esto se vota, ¿no perderías los eventos de desplazamiento en los dispositivos con ambas opciones? – Aaron