Comment dissocier le "survol" dans jQuery?
Cela ne fonctionne pas:
$(this).unbind('hover');
javascript
jquery
zsharp
la source
la source
Réponses:
$(this).unbind('mouseenter').unbind('mouseleave')
ou plus succinctement (merci @Chad Grant ):
$(this).unbind('mouseenter mouseleave')
la source
En fait, la documentation jQuery a une approche plus simple que les exemples en chaîne montrés ci-dessus (bien qu'ils fonctionnent très bien):
À partir de jQuery 1.7, vous pouvez également utiliser
$.on()
et$.off()
pour la liaison d'événement, donc pour dissocier l'événement de survol, vous utiliseriez le plus simple et le plus ordonné:Le pseudo-nom d'événement "hover" est utilisé comme raccourci pour "mouseenter mouseleave" mais était géré différemment dans les versions précédentes de jQuery; vous obligeant à supprimer expressément chacun des noms d'événements littéraux. Utiliser
$.off()
maintenant vous permet de supprimer les deux événements de souris en utilisant le même raccourci.Modifier 2016:
Encore une question populaire, il vaut donc la peine d'attirer l'attention sur le point de @ Dennis98 dans les commentaires ci-dessous que dans jQuery 1.9+, l'événement "hover" était obsolète au profit des appels standard "mouseenter mouseleave". Ainsi, votre déclaration de liaison d'événement devrait maintenant ressembler à ceci:
$('#myElement').off('mouseenter mouseleave');
la source
$.off("hover")
ne fonctionne pas. Cependant, l'utilisation des deux événements fonctionne très bien.$.off()
est toujours là, c'est la méthode recommandée pour dissocier les événements actuellement. Donc, à partir de maintenant, vous devez écrire$(element).off("mouseenter mouseleave");
.Dissociez les événements
mouseenter
etmouseleave
individuellement ou dissociez tous les événements sur le ou les éléments.ou
la source
unbind () ne fonctionne pas avec les événements en ligne codés en dur.
Ainsi, par exemple, si vous souhaitez dissocier l'événement mouseover
<div id="some_div" onmouseover="do_something();">
, j'ai trouvé que$('#some_div').attr('onmouseover','')
c'était un moyen rapide et sale de le réaliser.la source
Une autre solution est .die () pour les événements qui se sont attachés avec .live () .
Ex.:
Vous pouvez trouver une bonne référence ici: Exploration de jQuery .live () et .die ()
(Désolé pour mon anglais: ">)
la source
Tout ce que fait le survol dans les coulisses est lié à la propriété mouseover et mouseout. Je lierais et délierais vos fonctions de ces événements individuellement.
Par exemple, disons que vous avez le code HTML suivant:
alors votre jQuery serait:
la source
Vous pouvez supprimer un gestionnaire d'événements spécifique qui était attaché par
on
, en utilisantoff
En utilisant cela, vous ne supprimerez que handlerFunction
Une autre bonne pratique consiste à définir un namespace pour plusieurs événements attachés
la source
J'ai trouvé que cela fonctionne comme deuxième argument (fonction) de .hover ()
La première fonction (argument de .hover ()) est un survol de la souris et exécutera votre code. Le deuxième argument est mouseout qui dissociera l'événement de survol de #yourId. Votre code ne sera exécuté qu'une seule fois.
la source
$.unbind()
-ce que cela ne supprimerait pas tous les événements de cet objet? Dans quel cas des choses comme vos$.click()
événements échoueraient maintenant, non?