¿Cómo puedo desvincular "hover" en jQuery?
Esto no funciona:
$(this).unbind('hover');
javascript
jquery
zsharp
fuente
fuente
Respuestas:
$(this).unbind('mouseenter').unbind('mouseleave')
o más sucintamente (gracias @Chad Grant ):
$(this).unbind('mouseenter mouseleave')
fuente
En realidad, la documentación de jQuery tiene un enfoque más simple que los ejemplos encadenados que se muestran arriba (aunque funcionarán bien):
A partir de jQuery 1.7, también puede usar
$.on()
y$.off()
para el enlace de eventos, por lo que para desvincular el evento de desplazamiento, usaría el más simple y ordenado:El pseudo-nombre-evento "hover" se usa como una abreviatura de "mouseenter mouseleave" pero se manejaba de manera diferente en versiones anteriores de jQuery; requiriéndole que elimine expresamente cada uno de los nombres de eventos literales. Usar
$.off()
ahora le permite eliminar ambos eventos del mouse usando la misma abreviatura.Editar 2016:
Sigue siendo una pregunta popular, por lo que vale la pena llamar la atención sobre el punto de @ Dennis98 en los comentarios a continuación de que en jQuery 1.9+, el evento "hover" se desaprobó en favor de las llamadas estándar "mouseenter mouseleave". Entonces, su declaración de vinculación de eventos ahora debería verse así:
$('#myElement').off('mouseenter mouseleave');
fuente
$.off("hover")
no funciona. Sin embargo, usar ambos eventos funciona muy bien.$.off()
sigue ahí, es el método recomendado para desvincular eventos actualmente. Entonces, a partir de ahora, debes escribir$(element).off("mouseenter mouseleave");
.Desvincular los eventos
mouseenter
ymouseleave
individualmente o desvincular todos los eventos en los elementos.o
fuente
unbind () no funciona con eventos en línea codificados.
Entonces, por ejemplo, si desea desvincular el evento mouseover
<div id="some_div" onmouseover="do_something();">
, descubrí que$('#some_div').attr('onmouseover','')
es una forma rápida y sucia de lograrlo.fuente
Otra solución es .die () para eventos que se adjuntan con .live () .
Ex.:
Puede encontrar una buena referencia aquí: Explorando jQuery .live () y .die ()
(Perdón por mi inglés: ">)
fuente
Todo lo que hace el hover detrás de escena es vinculante a la propiedad mouseover y mouseout. Vincularía y desvincularía sus funciones de esos eventos individualmente.
Por ejemplo, digamos que tiene el siguiente html:
entonces tu jQuery sería:
fuente
Puede eliminar un controlador de eventos específico que se adjuntó mediante
on
, utilizandooff
Con esto, eliminará solo handlerFunction.
Otra buena práctica es establecer un espacio de nombres para múltiples eventos adjuntos
fuente
Encontré que esto funciona como segundo argumento (función) para .hover ()
La primera función (argumento para .hover ()) es el mouseover y ejecutará su código. El segundo argumento es mouseout, que desvinculará el evento de desplazamiento de #yourId. Su código se ejecutará solo una vez.
fuente
$.unbind()
eliminaría por sí mismo todos los eventos de ese objeto? En cuyo caso, cosas como tus$.click()
eventos ahora fallarían, ¿verdad?