lunes, 14 de septiembre de 2009

Listar todos los eventos asociados vía JQuery

La siguiente función permite mostrar donde le indiquemos, todos los eventos enlazados vía JQuery a un elemento


$.fn.listHandlers = function(events, outputFunction) {
return this.each(function(i){
var elem = this,
dEvents = $(this).data('events');
if (!dEvents) {return;}
$.each(dEvents, function(name, handler){
if((new RegExp('^(' + (events === '*' ? '.+' : events.replace(',','|').replace(/^on/i,'')) + ')$' ,'i')).test(name)) {
$.each(handler, function(i,handler){
outputFunction(elem, '\n' + i + ': [' + name + '] : ' + handler );
});
}
});
});
};


Ejemplo de uso:

//lista todos los manejadores de onclick de los a:
$('a').listHandlers('onclick', console.info);

//lista todos los managejadores de todos los elementos:
$('*').listHandlers('*', console.info);

//especifica la funcion de salida:
$('#whatever').listHandlers('click',function(element,data){
$('body').prepend('
' + element.nodeName + ':
' + data + '
');
});


vía: http://james.padolsey.com/javascript/debug-jquery-events-with-listhandlers

No hay comentarios: