2009-11-13 18 views
5

Como decía la pregunta, necesito la lista de eventos vinculados a un elemento específico.¿Es posible obtener una lista de eventos vinculados a un elemento en jQuery?

Me refiero a eventos como click, mouseover, etc. vinculados a ese elemento en la carga de la dom.

(estúpida) ejemplo:

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

Resultado:

clic, encima del ratón,

+0

¿Está tratando de depurar o administrar una solución desplegada? –

Respuesta

13

Cada evento se añade a una matriz enfoque.

Esta matriz se puede acceder mediante el método de datos de jQuery:

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

para registrar todos los eventos de un objeto a Firebug sólo tiene que escribir:

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

y obtendrá una lista de todos unidos eventos.


Actualización:

Para jQuery 1.8 y superior usted tiene que mirar en el objeto de datos interna jQuery:

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

Como nota para los visitantes nuevos: Esta respuesta no está actualizada desde jQuery [Versión 1.8] (http://blog.jquery.com/2011/11/08/building-a-slimmer-jquery/): "* .data ("Events"): jQuery almacena sus datos relacionados con eventos en un objeto de datos llamado eventos (wait for it) en cada elemento. Esta es una estructura de datos interna, por lo que en 1.8 se eliminará del espacio de nombre de datos de usuario para que gane t conflicto con elementos del mismo nombre. [...] * ". Ver también: [jQuery 1.8 find event handlers] (http://stackoverflow.com/questions/12214654/jquery-1-8-find-event-handlers) – insertusernamehere

+1

Gracias - He añadido una nota :) – jantimon

2

puede acceder a él por element.data('events');. Ejemplo:

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. 
    } 
} 
Cuestiones relacionadas