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

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

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

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

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

спасибо

Ответ 1

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

$('p').unbind();

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

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

Ответ 2

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

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

$('p').off();

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

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

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

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

Ответ 3

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

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

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

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