2009-11-13 14 views
5

Come ho detto la domanda, ho bisogno dell'elenco degli eventi legati a un elemento specifico.È possibile ottenere un elenco di eventi associati a un elemento in jQuery?

Intendo eventi come clic, mouseover ecc legati a quell'elemento al caricamento del dom.

(stupido) Esempio:

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

Risultato:

clic, mouseover, attenzione

+0

Si sta tentando di eseguire il debug o gestire una soluzione distribuita? –

risposta

13

Ogni evento viene aggiunto a un array.

Questo array è possibile accedere utilizzando il metodo dei dati jQuery:

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

registrare tutti gli eventi di un oggetto per Firebug basta digitare:

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

e si otterrà un elenco di tutti legati eventi.


Aggiornamento:

Per jQuery 1.8 e più alto si deve guardare nell'oggetto dati interno jQuery:

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

Come nota per i nuovi visitatori: questa risposta è obsoleta da jQuery [Versione 1.8] (http://blog.jquery.com/2011/11/08/building-a-slimmer-jquery/): "* .data ("Eventi"): jQuery memorizza i dati relativi agli eventi in un oggetto dati denominato (attendere per esso) gli eventi su ciascun elemento.Questa è una struttura interna dei dati, quindi in 1.8 questo verrà rimosso dallo spazio dei nomi dei dati utente in modo da aver vinto ' t conflitto con oggetti con lo stesso nome. [...] * ". Vedi anche: [jQuery 1.8 trova gestori di eventi] (http://stackoverflow.com/questions/12214654/jquery-1-8-find-event-handlers) – insertusernamehere

+1

Grazie - Ho aggiunto una nota :) – jantimon

2

è possibile accedervi da element.data('events');. Esempio:

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. 
    } 
} 
Problemi correlati