388 Stimmen

Kann ich mit jQuery Ereignisse finden, die an ein Element gebunden sind?

Ich binde zwei Ereignishandler an diesen Link:

<a href='#' id='elm'>Show Alert</a>

JavaScript:

$(function()
{
  $('#elm').click(_f);
  $('#elm').mouseover(_m);
});

function _f(){alert('clicked');}
function _m(){alert('mouse over');}

Gibt es eine Möglichkeit, eine Liste aller Ereignisse auf ein Element gebunden zu erhalten, in diesem Fall auf Element mit id="elm" ?

5voto

Chris22 Punkte 1833

Dies ist zwar nicht gerade spezifisch für jQuery-Selektoren/Objekte, aber in FireFox Quantum 58.x können Sie mit den Dev-Tools Ereignis-Handler für ein Element finden:

  1. Klicken Sie mit der rechten Maustaste auf das Element
  2. Klicken Sie im Kontextmenü auf 'Element inspizieren'.
  3. Wenn neben dem Element ein "ev"-Symbol (gelber Kasten) erscheint, klicken Sie auf das "ev"-Symbol
  4. Zeigt alle Ereignisse für dieses Element und den Ereignishandler an

FF Quantum Dev Tools

5voto

Pikamander2 Punkte 5745

Beachten Sie, dass Ereignisse an das Dokument selbst und nicht an das betreffende Element gebunden sein können. In diesem Fall sollten Sie verwenden:

$._data( $(document)[0], "events" );

Und finden Sie das Ereignis mit dem richtigen Selektor :

enter image description here

Und dann schauen Sie sich die Handler > [[FunctionLocation]]

enter image description here

2voto

Adrian Liew Punkte 83

Ich habe so etwas wie dieses if($._data($("a.wine-item-link")[0]).events == null) { ... etwas tun, ziemlich viel binden ihre Event-Handler wieder } zu überprüfen, ob mein Element an ein Ereignis gebunden ist. Es wird immer noch sagen, undefiniert (null), wenn Sie alle Ihre Event-Handler von diesem Element ungebunden haben. Das ist der Grund, warum ich dies in einem if-Ausdruck auswerte.

1voto

giri-jeedigunta Punkte 191

Wenn ich eine kleine komplexe DOM-Abfrage an $._data wie diese übergeben: $._data($('#outerWrap .innerWrap ul li:last a'), 'events') wird in der Browserkonsole als undefiniert angezeigt.

Also musste ich $._data auf dem übergeordneten div verwenden: $._data($('#outerWrap')[0], 'events') um die Ereignisse für die a-Tags zu sehen. Hier ist ein JSFiddle für das gleiche: http://jsfiddle.net/giri_jeedigunta/MLcpT/4/

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X