Как отменить привязку всех событий с помощью 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");
});
Также посмотрите, как сохранить события, которые вы отключили в этом вопросе переполнения стека.