как отменить привязку всех событий с помощью jquery - PullRequest
68 голосов
/ 25 августа 2010

я могу использовать этот код для удаления события клика,

$('p').unbind('click')

, но есть ли способ удалить все события?

имеет метод с именем unbindAll в jquery?*

спасибо

Ответы [ 3 ]

91 голосов
/ 25 августа 2010

Вы можете позвонить .unbind() без параметров, чтобы сделать это:

$('p').unbind();

С Документы :

В простейшем случае без аргументов .unbind() удаляет все обработчики, прикрепленные к элементам.

81 голосов
/ 21 августа 2012

Начиная с jQuery 1.7, off() и on() являются предпочтительными методами связывания и отмены привязки обработчиков событий.

Таким образом, чтобы удалить все обработчики из элемента, используйте это:

$('p').off();

или для определенных обработчиков:

$('p').off('click hover');

А для добавления или привязки обработчиков событий вы можете использовать

$('p').on('click hover', function(e){
    console.log('click or hover!');
});
1 голос
/ 31 января 2017

@ jammypeach подходит как включенный и выключенный способ использования. Отмена привязки иногда приводит к созданию странного поведения (например, неправильное связывание событий).

Чтобы отменить привязку всех элементов в теле, найдите их все и для каждого из них отключите обработчик щелчка (что было старым откреплением):

$("body").find("*").each(function() {
    $(this).off("click");
});

Также смотрите, как сохранить события, которые вы отключили в этот вопрос переполнения стека .

...