Как отменить привязку всех событий с помощью jquery

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

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

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

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

Спасибо

3 ответа

Решение

Ты можешь позвонить .unbind() без параметров для этого:

$('p').unbind();

Из документов:

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

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

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

$('p').off();

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

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

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

$('p').on('click hover', function(e){
    console.log('click or hover!');
});

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

$(document).off().find("*").off();

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

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

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

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

Другие вопросы по тегам