In modernen Versionen von jQuery würden Sie die $._data
Methode verwenden, um alle Ereignisse zu finden, die von jQuery an das betreffende Element angehängt wurden. Beachten Sie , dass dies nur für den internen Gebrauch gilt:
// Bind up a couple of event handlers
$("#foo").on({
click: function(){ alert("Hello") },
mouseout: function(){ alert("World") }
});
// Lookup events for this particular Element
$._data( $("#foo")[0], "events" );
Das Ergebnis von $._data
ist ein Objekt, das beide von uns festgelegten Ereignisse enthält (siehe Abbildung unten mit mouseout
erweiterter Eigenschaft):
In Chrome können Sie dann mit der rechten Maustaste auf die Handlerfunktion klicken und auf "Funktionsdefinition anzeigen" klicken, um die genaue Stelle anzuzeigen, an der sie in Ihrem Code definiert ist.
$._data(element[0], ‘events’);
$._data()
wird von JQuery intern verwendet.$.data()
ist die öffentliche Methode für den Benutzer. Und$.data(element, 'events')
funktioniert gut.Allgemeiner Fall:
Sources
RegisterkarteEvent Listener Breakpoints
und erweitern Sie den BaumEbenso können Sie:
Inspect element
"event listeners
'.quelle
Ich füge dies für die Nachwelt hinzu; Es gibt einen einfacheren Weg, bei dem nicht mehr JS geschrieben wird. Verwenden des erstaunlichen Firebug-Addons für Firefox ,
quelle
Mit der Javascript-Funktion getEventListeners () können Sie jetzt einfach eine Liste der an ein Objekt gebundenen Ereignis-Listener abrufen.
Geben Sie beispielsweise Folgendes in die Konsole der Entwicklertools ein:
quelle
Mit dem Plugin für das jQuery Audit-Plugin sollten Sie dies über die normalen Chrome Dev Tools tun können. Es ist nicht perfekt, aber es sollte Ihnen ermöglichen, den tatsächlichen Handler zu sehen, der an das Element / Ereignis gebunden ist, und nicht nur den generischen jQuery-Handler.
quelle
Während dies nicht genau für jQuery-Selektoren / -Objekte spezifisch ist, können Sie in FireFox Quantum 58.x mithilfe der Dev-Tools Ereignishandler für ein Element finden:
quelle
Ich habe so etwas verwendet, wenn ($ ._ data ($ ("a.wine-item-link") [0]). Events == null) {... etwas tun, ihre Ereignishandler so ziemlich wieder binden}, um es zu überprüfen wenn mein Element an ein Ereignis gebunden ist. Es wird weiterhin undefined (null) angezeigt, wenn Sie alle Event-Handler von diesem Element getrennt haben. Das ist der Grund, warum ich dies in einem if-Ausdruck bewerte.
quelle
Beachten Sie, dass Ereignisse möglicherweise an das Dokument selbst und nicht an das betreffende Element angehängt werden. In diesem Fall möchten Sie Folgendes verwenden:
Und finden Sie das Ereignis mit der richtigen Auswahl :
Und dann schauen Sie sich den Handler an > [[FunctionLocation]]
quelle
Wenn ich eine kleine komplexe DOM-Abfrage an $ ._-Daten wie folgt übergebe:
$._data($('#outerWrap .innerWrap ul li:last a'), 'events')
wird in der Browserkonsole undefiniert ausgelöst .Also musste ich $ ._ Daten für das übergeordnete div verwenden:
$._data($('#outerWrap')[0], 'events')
um die Ereignisse für die a-Tags zu sehen. Hier ist eine JSFiddle für dasselbe: http://jsfiddle.net/giri_jeedigunta/MLcpT/4/quelle
$('#outerWrap')
. Die Ereignisse sind tatsächlich an dieses Element gebunden und nicht an die einzelnen Anker.