Wie binde ich den "Schwebeflug" in jQuery auf?
Das funktioniert nicht:
$(this).unbind('hover');
javascript
jquery
zsharp
quelle
quelle
Antworten:
$(this).unbind('mouseenter').unbind('mouseleave')
oder prägnanter (danke @Chad Grant ):
$(this).unbind('mouseenter mouseleave')
quelle
Tatsächlich hat die jQuery-Dokumentation einen einfacheren Ansatz als die oben gezeigten verketteten Beispiele (obwohl sie einwandfrei funktionieren):
Ab jQuery 1.7 können Sie auch
$.on()
und$.off()
für die Ereignisbindung verwenden. Um das Schwebeereignis zu lösen, verwenden Sie Folgendes: Einfacher und übersichtlicher:Der Pseudoereignisname "hover " wird als Abkürzung für "mouseenter mouseleave" verwendet, wurde jedoch in früheren jQuery-Versionen anders behandelt. Sie müssen jeden der wörtlichen Ereignisnamen ausdrücklich entfernen. Mit "
$.off()
Jetzt verwenden" können Sie beide Mausereignisse mit derselben Kurzform löschen.Bearbeiten 2016:
Es ist immer noch eine beliebte Frage, daher lohnt es sich, in den Kommentaren unten auf den Punkt von @ Dennis98 aufmerksam zu machen , dass in jQuery 1.9+ das "Hover " -Ereignis zugunsten der Standardaufrufe "mouseenter mouseleave" veraltet war . Ihre Ereignisbindungserklärung sollte nun folgendermaßen aussehen:
$('#myElement').off('mouseenter mouseleave');
quelle
$.off("hover")
funktioniert nicht. Die Verwendung beider Ereignisse funktioniert jedoch hervorragend.$.off()
ist immer noch da, es ist derzeit die empfohlene Methode zum Aufheben der Bindung von Ereignissen. Ab sofort müssen Sie also schreiben$(element).off("mouseenter mouseleave");
.Entbinden Sie die Ereignisse
mouseenter
undmouseleave
einzeln oder lösen Sie alle Ereignisse auf den Elementen.oder
quelle
unbind () funktioniert nicht mit fest codierten Inline-Ereignissen.
Wenn Sie beispielsweise das Mouseover-Ereignis von trennen möchten
<div id="some_div" onmouseover="do_something();">
,$('#some_div').attr('onmouseover','')
ist dies ein schneller und schmutziger Weg, um dies zu erreichen.quelle
Eine andere Lösung ist .die () für Ereignisse, die mit .live () verknüpft sind .
Ex.:
Eine gute Referenz finden Sie hier: Erkunden von jQuery .live () und .die ()
(Entschuldigung für mein Englisch: ">)
quelle
Alles, was Sie hinter den Kulissen tun, ist an die Eigenschaft mouseover und mouseout gebunden. Ich würde Ihre Funktionen von diesen Ereignissen individuell binden und trennen.
Angenommen, Sie haben das folgende HTML:
dann wäre deine jQuery:
quelle
Sie können einen bestimmten Ereignishandler entfernen, der von mit angehängt
on
wurdeoff
Auf diese Weise entfernen Sie nur handlerFunction.
Eine weitere bewährte Methode besteht darin, einen nameSpace für mehrere angehängte Ereignisse festzulegen
quelle
Ich fand, dass dies als zweites Argument (Funktion) für .hover () funktioniert.
Die erste Funktion (Argument für .hover ()) ist Mouseover und führt Ihren Code aus. Das zweite Argument ist das Mouseout, mit dem das Hover-Ereignis von #yourId getrennt wird. Ihr Code wird nur einmal ausgeführt.
quelle
$.unbind()
alleine alle Ereignisse von diesem Objekt entfernen? In welchem Fall würden Dinge wie Ihre$.click()
Veranstaltungen jetzt scheitern, oder?