Существуют ли инструменты / методы для отладки обработчиков событий jQuery? - PullRequest
29 голосов
/ 04 марта 2011

В настоящее время я пытаюсь выяснить, какие обработчики событий щелчка прикрепили к моему div. Должен быть подключен только один обработчик, но, по-видимому, есть хотя бы один. Я использую FireBug, но Chrome может быть вариантом. Мне не нравится IE, поэтому я бы предпочел не использовать это.

В лучшем случае я могу проверить свой div с помощью FireBug и просмотреть список обработчиков событий.

Ответы [ 5 ]

18 голосов
/ 04 марта 2011

Визуальное событие - это хорошая закладка javascript, которую вы можете запустить на странице, чтобы увидеть все события, связанные с элементом управления.

10 голосов
/ 04 марта 2011

Если вы используете jQuery для назначения обработчиков событий, вы можете найти прикрепленные события с помощью $("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>");
        });
    });
});

Если вы хотите получить живые обработчики, вы можете сделать то же самое для документа.

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

Пример для jsfiddle .

8 голосов
/ 04 марта 2011

Установите плагин fireQuery для firebug, и вы увидите все присоединенные к jQuery события на дисплее firebug, как вы и хотели;)

Вы можете найти его здесь: http://firequery.binaryage.com/ или здесь: https://addons.mozilla.org/en-us/firefox/addon/firequery/

Это сделает ваш firebug похожим на это: enter image description here

6 голосов
/ 04 марта 2011

Проверьте функцию $ .data.

В частности, что-то вроде этого:

var clicks = $ (mySelector) .data ('events'). Click;

Должен возвращать список обработчиков событий щелчка и связанных с ними объектов DOM.

0 голосов
/ 04 марта 2011

Дополнения "fire-bug" (для Mozilla) - лучший вариант для этого.

...