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

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

$('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!');
});

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

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

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

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