Pregunta

Con jQuery se puede unir a las funciones de un evento desencadenado en un objeto DOM utilizando .bind() o una de las funciones de controlador de eventos de ayuda.

jQuery tiene que almacenar esto internamente alguna manera y me pregunto si es posible dado un objeto DOM, para saber qué eventos se han unido al objeto, y el acceso a las funciones etc. El resultado deseado retorno podría ser algo como esto:

{
  click: [function1, function2],
  change: [function3],
  blur: [function4, function5, function6]
}
¿Fue útil?

Solución

Editar a continuación el método sólo funciona en jQuery <1,7

Se puede encontrar una gran cantidad de consejos y trucos interesantes en este artículo: Las cosas que no puede saber acerca de jQuery .

Parece que utiliza jQuery data a los controladores de eventos del almacén:

  

Se puede acceder a todos los controladores de eventos   unido a un elemento (o cualquier objeto)   a través del almacenamiento de eventos de jQuery:

// List bound events:
console.dir( jQuery('#elem').data('events') );

// Log ALL handlers for ALL events:
jQuery.each($('#elem').data('events'), function(i, event){
    jQuery.each(event, function(i, handler){
        console.log( handler['handler'].toString() );
    });
});

// You can see the actual functions which will occur
// on certain events; great for debugging!

Otros consejos

jQuery 1.7 se ha detenido la exposición de los eventos en la función () de datos regular. Todavía se puede conseguir de esta manera:

var elem = $('#someid')[0];
var data = jQuery.hasData( elem ) && jQuery._data( elem );
console.log(data.events);

Tenga en cuenta que esto sólo funciona para los eventos que han sido vinculados con jQuery. Que yo sepa que no hay manera de ver todos los eventos que han sido unidos utilizando las funciones DOM regulares como addEventListener.

Puede verlos en el inspector de webkit sin embargo:. En la pestaña Elementos de navegar al nodo DOM deseada, en el lado derecho seleccione la opción "detectores de eventos" desplegable

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top