2011-03-04 23 views
29

Actualmente estoy tratando de averiguar qué controladores de eventos de click han adjuntado a mi div. Solo debe haber un manejador adjunto, pero parece haber al menos uno. Estoy usando FireBug pero Chrome podría ser una opción también. No me gusta IE, así que preferiría no usar eso.¿Existen herramientas/técnicas para depurar manejadores de eventos jQuery?

El mejor de los casos es que puedo inspeccionar mi div usando FireBug, y ver una lista de controladores de eventos.

+1

¿Qué pasa con los manejadores 'en vivo'? – SLaks

+1

¿qué hay de ellos? – MedicineMan

+0

me gusta esta pregunta y otra más ma lado –

Respuesta

18

Visual Event es un buen marcador javascript puede ejecutar en una página para ver todos los eventos que están conectados a un control.

+0

Me gusta mucho – MedicineMan

+1

todavía no parece revelar la función que realmente está manejando el evento, y solo muestra que jquery de alguna manera está escuchando – Dukeatcoding

10

Si está utilizando jQuery para asignar sus controladores de eventos se puede localizar los eventos fijados por medio de $("div").data("events");

$("div.test").each(function(){ 
    var events = $(this).data("events"); 
    //events.click will give you a list of click handlers, events.mouseenter, etc.. 
    $.each(events, function(i, eventType){ 
     $.each(eventType, function(){ 
      //this.handler() can be used to find the anonymous function assigned to the element. 
      $("body").append("<h1>" + this.type + "</h1>"); 
     }); 
    }); 
}); 

Si desea obtener manipuladores vivo que puede hacer lo mismo para el documento.

var liveEvents = $(document).data("events").live; 
$.each(liveEvents, function() { 
    $("body").append("<h1>" + this.selector + this.origType + "</h1>"); 
}); 

Ejemplo en jsfiddle.

+1

Esto no parece funcionar con jQuery 1.10. Después de '$ (element) .on (" custom-event ", function() {console.log (" hi ");})' si inspecciono '$ (element) .data ('events')' Obtendré ' undefined', pero '$ (element) .trigger (" custom-event ")' activa esa devolución de llamada. –

6

Compruebe la función $ .data.

Específicamente algo como esto:.

var = $ .data hace clic (mySelector) ('eventos') haga clic;

Debería devolver una lista de manejadores de eventos de clic y sus objetos DOM asociados.

+0

nice and simple – MedicineMan

-2

complementos "fire-bug" (para mozilla) es la mejor opción para esto.

+0

'El mejor de los casos es que puedo inspeccionar mi div usando FireBug, y ver una lista de controladores de eventos. – SLaks

+0

He instalado firebug y lo he estado usando. ¿Qué sigue? – MedicineMan

+0

@MedicineMan :: aplicar puntos de interrupción para el doblaje. –

Cuestiones relacionadas