¿Es posible implementar "pulsación larga" en JavaScript (o jQuery)? ¿Cómo?
(fuente: androinica.com )
HTML
<a href="" title="">Long press</a>
JavaScript
$("a").mouseup(function(){
// Clear timeout
return false;
}).mousedown(function(){
// Set timeout
return false;
});
javascript
jquery
jquery-ui
jquery-mobile
jquery-events
Randy Mayer
fuente
fuente
jQuery(...).longclick(function() { ... });
Respuestas:
No hay magia de 'jQuery', solo temporizadores de JavaScript.
fuente
clearTimeout(pressTimer)
amousemove
, a menos que me falta algo. Lo cual, ciertamente, no tendría precedentes.Basado en la respuesta de Maycow Moura, escribí esto. También asegura que el usuario no hizo un clic derecho, lo que activaría una pulsación larga y funciona en dispositivos móviles. MANIFESTACIÓN
También deberías incluir algún indicador usando animaciones CSS:
fuente
:hover
estado es pegajoso en los dispositivos táctiles, quizás eso también se aplique aquí.touchend
debería disparar la OMI, no hay razón para tenerlo pegajoso cuando es un código especial para dispositivos táctiles, tal vez intente algo mañana.Puede utilizar el evento taphold de la API móvil jQuery.
fuente
Creé largo de prensa del evento (0.5K JavaScript puro) para resolver esto, se agrega un
long-press
evento para el DOM.Escuche
long-press
en cualquier elemento:Escuche
long-press
sobre un elemento específico :Funciona en IE9 +, Chrome, Firefox, Safari y aplicaciones móviles híbridas (Cordova e Ionic en iOS / Android)
Manifestación
fuente
Si bien parece lo suficientemente simple como para implementarlo por su cuenta con un tiempo de espera y un par de controladores de eventos del mouse, se vuelve un poco más complicado cuando considera casos como hacer clic, arrastrar y soltar, admitiendo presionar y presionar prolongadamente en el mismo elemento y trabajar con dispositivos táctiles como el iPad. Terminé usando el complemento jQuery longclick ( Github ), que se encarga de esas cosas por mí. Si solo necesita admitir dispositivos con pantalla táctil como teléfonos móviles, también puede probar el evento taphold de jQuery Mobile .
fuente
Complemento jQuery. Solo ponlo
$(expression).longClick(function() { <your code here> });
. El segundo parámetro es la duración de la retención; el tiempo de espera predeterminado es 500 ms.fuente
Para desarrolladores multiplataforma (tenga en cuenta que todas las respuestas dadas hasta ahora no funcionarán en iOS) :
Mouseup / down parecía funcionar bien en Android , pero no en todos los dispositivos, es decir, (samsung tab4). No funcionó en absoluto en iOS .
Investigaciones posteriores parecen que esto se debe a que el elemento tiene selección y la ampliación nativa interrumpe al oyente.
Este detector de eventos permite abrir una imagen en miniatura en un modal de arranque, si el usuario retiene la imagen durante 500 ms.
Utiliza una clase de imagen receptiva, por lo que muestra una versión más grande de la imagen. Esta pieza de código ha sido completamente probada (iPad / Tab4 / TabA / Galaxy4):
fuente
MANIFESTACIÓN
fuente
La respuesta de Diodeus es increíble, pero le impide agregar una función onClick, nunca ejecutará la función hold si pones un onclick. Y la respuesta de Razzak es casi perfecta, pero ejecuta la función de retención solo con el mouse hacia arriba y, en general, la función se ejecuta incluso si el usuario sigue presionando.
Entonces, me uní a ambos e hice esto:
fuente
Para navegadores móviles modernos:
https://developer.mozilla.org/en-US/docs/Web/Events/contextmenu
fuente
bind()
jquery 1.7+ =on()
yunbind()
=off()
Puede establecer el tiempo de espera para ese elemento con el mouse hacia abajo y borrarlo con el mouse hacia arriba:
Con esto, cada elemento obtiene su propio tiempo de espera.
fuente
$(this).mouseup(function(){});
no elimina el controlador de eventos, agrega otro. Úselo en su.unbind
lugar.off()
ahora en lugar de desvincular.Puede usar el taphold de jquery-mobile. Incluya jquery-mobile.js y el siguiente código funcionará bien
fuente
Lo más elegante y limpio es un complemento de jQuery: https://github.com/untill/jquery.longclick/ , también disponible como packacke: https://www.npmjs.com/package/jquery.longclick .
En resumen, lo usas así:
La ventaja de este complemento es que, a diferencia de algunas de las otras respuestas aquí, los eventos de clic aún son posibles. Tenga en cuenta también que se produce un clic largo, al igual que un toque prolongado en un dispositivo, antes del mouseup. Entonces, esa es una característica.
fuente
Para mí es trabajar con ese código (con jQuery):
fuente
Puede verificar el tiempo para identificar Click o Long Press [jQuery]
fuente
¿Me gusta esto?
fuente
Puede utilizar
jquery
eventos táctiles. ( ver aquí )fuente
Necesitaba algo para eventos de teclado de pulsación larga, así que escribí esto.
fuente
Creo que esto puede ayudarte:
fuente