2009-11-13 14 views
5

Comme la question l'indique, j'ai besoin de la liste des événements liés à un élément spécifique.Est-il possible d'obtenir une liste d'événements liés à un élément dans jQuery?

Je veux dire des événements comme click, mouseover etc liés à cet élément au chargement de la dom.

(stupide) Exemple:

$("#element").click(function() 
{ 
    //stuff 
}); 
$("#element").mouseover(function() 
{ 
    //stuff 
}); 
$("#element").focus(function() 
{ 
    //stuff 
}); 

Résultat:

clic, mouseover, accent

+0

Essayez-vous de déboguer ou de gérer une solution déployée? –

Répondre

13

Chaque événement est ajouté à un tableau.

Ce tableau est accessible en utilisant la méthode de données jQuery:

$("#element").data('events') 

Pour consigner tous les événements d'un objet à Firebug il suffit de taper:

console.log ($("#element").data('events')) 

Et vous obtiendrez une liste de tous liés événements.


Mise à jour:

Pour jQuery 1.8 et plus vous devez regarder dans l'objet de données jQuery interne:

$("#element").each(function(){console.log($._data(this).events);}); 
// or 
console.log($._data($("#element")[0]).events); 
+1

Comme note pour les nouveaux visiteurs: Cette réponse est obsolète depuis jQuery [Version 1.8] (http://blog.jquery.com/2011/11/08/building-a-slimmer-jquery/): "* .data ("Événements"): jQuery stocke ses données liées aux événements dans un objet de données nommé (attendez-le) événements sur chaque élément.C'est une structure de données interne de sorte que 1.8 sera supprimé de l'espace des noms de données utilisateur t en conflit avec des objets du même nom. [...] * ". Voir aussi: [jQuery 1.8 find event handlers] (http://stackoverflow.com/questions/12214654/jquery-1-8-find-event-handlers) – insertusernamehere

+1

Merci - J'ai ajouté une note :) – jantimon

2

Vous pouvez y accéder en element.data('events');. Exemple:

var events = element.data('events'); 
for (var type in events) { 
    // `type` is "click", "mouseover", "change", etc. 
    for (var handler in events[type]) { 
     // `handler` is the associated function. 
    } 
}