Очистить каждый обработчик событий - PullRequest
0 голосов
/ 15 января 2012

Я хотел бы отменить каждый обработчик событий, определенный на странице с помощью Javascript. Другими словами, если ранее на странице было настроено много прослушивателей событий на разных уровнях DOM, этот метод просто удалял бы каждый из них. Есть ли способ сделать это в Javascript?

Ответы [ 2 ]

2 голосов
/ 15 января 2012

Для очистки всех событий, динамически прикрепленных к элементам в теле страницы, вы можете сделать:

document.body.innerHTML = document.body.innerHTML;

Для очистки событий, прикрепленных к объекту окна, вы можете:

window.onscroll = function() {};

и т. Д. *

1 голос
/ 15 января 2012

Нет, нет собственного списка событий, чтобы увидеть, что с чем связано. JQuery имеет свой собственный, если вы хотите лучше управлять событиями.

Вот как это делается в JQuery:

(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('\n\n');
        });
        return s.join('');
    }
    $.fn.eventReport = function(selector) {
        return $.eventReport(selector, this);
    }
})(jQuery);

Вы можете назвать это различными способами, чтобы удовлетворить ваши потребности:

// all events
alert($.eventReport());

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

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

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

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

Оттуда просто открепиться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...