Статьи

Вывод списка событий JavaScript с использованием jQuery

Как вы можете перечислить события JavaScript, прикрепленные к элементу?

Я хотел получить полный список событий js / jQuery, которые прикреплены к любому указанному элементу, и я читал и увидел, что Джон Резиг предложил использовать этот метод:

$('div').data('events');

Теоретически это позволило бы получить все события, связанные с элементом div. Чтобы подправить это, я нашел этот метод довольно продуктивным в перечислении событий!

 (function($) {
    $.eventReport = function(selector, root) {
        var s = [];
        $(selector || '*', root).andSelf().each(function() {
            var e = $.data(this, 'events');
            if(!e) return;
            s.push(this.tagName);
            if(this.id) s.push('#', this.id);
            if(this.className) s.push('.', this.className);
            for(var p in e) s.push('n', p);
            s.push('nn');
        });
        return s.join('');
    }
    $.fn.eventReport = function(selector) {
        return $.eventReport(selector, this);
    }
})(jQuery);

Использование и вывод

 //List all events
console.log($.eventReport());

events-list

 // just events on inputs
console.log($.eventReport('input'));

events-list-input

Другое использование

 // just events assigned to this element
console.log($.eventReport('#myelement'));

// events assigned to inputs in this element
console.log($.eventReport('input', '#myelement'));
console.log($('#myelement').eventReport('input')); // same result

// just events assigned to this element's children
console.log($('#myelement').eventReport());
console.log($.eventReport('*', '#myelement'); // same result

Другие методы

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