Je lie deux gestionnaires d'événements sur ce lien:
<a href='#' id='Elm'>Show Alert</a>
JavaScript:
$(function()
{
$('#Elm').click(_f);
$('#Elm').mouseover(_m);
});
function _f(){alert('clicked');}
function _m(){alert('mouse over');}
Est-il possible d'obtenir une liste de tous les événements liés à un élément, dans ce cas sur un élément avec id="Elm"
?
Dans les versions modernes de jQuery, vous utiliseriez la méthode $._data
pour rechercher tous les événements attachés par jQuery à l'élément en question. Note, 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 contenant les deux événements que nous avons définis (illustré ci-dessous avec la propriété mouseout
développée):
Ensuite, dans Chrome, vous pouvez cliquer avec le bouton droit de la souris sur la fonction de gestionnaire et cliquer sur "Afficher la définition de la fonction" pour afficher le point exact où elle est définie dans votre code.
Cas général:
Sources
Event Listener Breakpoints
et développez l'arborescenceDe même, vous pouvez:
Inspect element
"event listeners
'.J'ajoute ceci pour la postérité; Il existe un moyen plus simple d’impliquer plus de JS. En utilisant le addon incroyable de firebug pour firefox ,
Vous pouvez maintenant obtenir simplement une liste des é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:
// Get all event listners bound to the document object
getEventListeners(document);
Le plugin plug-in jQuery Audit devrait vous permettre de le faire via les outils de développement Chrome. Ce n'est pas parfait, mais cela devrait vous permettre de voir le gestionnaire réel lié à l'élément/événement et pas seulement le gestionnaire générique jQuery.
Bien que cela ne soit pas exactement spécifique aux sélecteurs/objets jQuery, dans FireFox Quantum 58.x, vous pouvez rechercher des gestionnaires d'événements sur un élément à l'aide des outils de développement:
J'ai utilisé quelque chose comme ceci si ($ ._ data ($ ("a.wine-item-link") [0]). Events == null) {... fait quelque chose, lie à peu près leurs gestionnaires d'événements} pour vérifier si mon élément est lié à un événement. Il sera toujours dit non défini (null) si vous avez détaché tous vos gestionnaires d’événements de cet élément. C'est la raison pour laquelle j'évalue cela dans une expression if.
Lorsque je passe une petite requête DOM complexe à $ ._ des données comme celle-ci: $._data($('#outerWrap .innerWrap ul li:last a'), 'events')
, il renvoie non défini dans la console du navigateur.
J'ai donc dû utiliser $ ._ data sur le div parent: $._data($('#outerWrap')[0], 'events')
pour voir les événements pour les balises a. Voici un JSFiddle pour le même: http://jsfiddle.net/giri_jeedigunta/MLcpT/4/