Dans les versions modernes de jQuery, vous utiliseriez la $._data
méthode pour trouver tous les événements attachés par jQuery à l'élément en question. Remarque , il s'agit d'une méthode à usage interne uniquement:
// 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" );
Le résultat de $._data
sera un objet qui contient les deux événements que nous avons définis (illustré ci-dessous avec la mouseout
propriété développée):
Ensuite, dans Chrome, vous pouvez cliquer avec le bouton droit sur la fonction de gestionnaire et cliquer sur "Afficher la définition de la fonction" pour vous montrer l'endroit exact où elle est définie dans votre code.
$._data(element[0], ‘events’);
$._data()
est utilisé par JQuery interne.$.data()
est la méthode publique à utiliser. Et$.data(element, 'events')
fonctionne bien.Cas général:
Sources
ongletEvent Listener Breakpoints
et développez l'arborescenceDe même, vous pouvez:
Inspect element
"event listeners
'.la source
J'ajoute cela pour la postérité; Il existe un moyen plus simple qui n'implique pas d'écrire plus de JS. En utilisant l' incroyable addon firebug pour firefox ,
la source
Vous pouvez maintenant simplement obtenir une liste d'écouteurs d'événements liés à un objet en utilisant la fonction javascript getEventListeners ().
Par exemple, tapez ce qui suit dans la console des outils de développement:
la source
Le plugin jQuery Audit devrait vous permettre de le faire via les outils de développement Chrome standard. Ce n'est pas parfait, mais il devrait vous permettre de voir le gestionnaire réel lié à l'élément / événement et pas seulement le gestionnaire générique jQuery.
la source
Bien que cela ne soit pas spécifiquement spécifique aux sélecteurs / objets jQuery, dans FireFox Quantum 58.x, vous pouvez trouver des gestionnaires d'événements sur un élément à l'aide des outils de développement:
la source
J'ai utilisé quelque chose comme ça if ($ ._ data ($ ("a.wine-item-link") [0]). Events == null) {... faire quelque chose, lier à nouveau leurs gestionnaires d'événements} pour vérifier si mon élément est lié à un événement. Il dira toujours undefined (null) si vous avez détaché tous vos gestionnaires d'événements de cet élément. C'est la raison pour laquelle j'évalue ceci dans une expression if.
la source
Notez que les événements peuvent être attachés au document lui-même plutôt qu'à l'élément en question. Dans ce cas, vous voudrez utiliser:
Et trouvez l'événement avec le bon sélecteur :
Et puis regardez le gestionnaire > [[FunctionLocation]]
la source
Lorsque je passe une petite requête DOM complexe à des données $ ._ comme celle-
$._data($('#outerWrap .innerWrap ul li:last a'), 'events')
ci : cela lance undefined dans la console du navigateur.J'ai donc dû utiliser des données $ ._ sur la div parent:
$._data($('#outerWrap')[0], 'events')
pour voir les événements des balises a. Voici un JSFiddle pour le même: http://jsfiddle.net/giri_jeedigunta/MLcpT/4/la source
$('#outerWrap')
. Les événements sont en fait liés à cet élément plutôt qu'aux ancres individuelles.