Подтвердить что ты не робот

Как очистить/удалить обработчик событий JavaScript?

Учитывая следующий фрагмент HTML:

<form id="aspnetForm" onsubmit="alert('On Submit Run!'); return true;">

Мне нужно удалить/очистить обработчик для события onsubmit и зарегистрировать свой собственный, используя jQuery или любой другой вкус использования JavaScript.

4b9b3361

Ответ 1

Для этого без каких-либо библиотек:

document.getElementById("aspnetForm").onsubmit = null;

Ответ 2

С jQuery

$('#aspnetForm').unbind('submit');

И затем добавьте свой собственный.

Ответ 3

Попробуйте, это работает для меня:

$('#aspnetForm').removeAttr('onsubmit').submit(function() {   
    alert("My new submit function justexecuted!"); 
});

Подробнее см. .

Ответ 4

Для jQuery, если вы привязываете обработчики событий с помощью .live, вы можете использовать .die, чтобы развязать все экземпляры, связанные с .live.

Ответ 5

Сейчас это древний вопрос, но, учитывая, что все основные браузеры отказались от EventTarget.getEventListeners(), здесь есть способ удалить ВСЕ обработчики событий для элемента и его дочерних элементов и сохранить только структуру HTML. Мы просто клонируем элемент и заменяем его:

let e = document.querySelector('selector');
let clone = e.cloneNode(true);
e.replaceWith(clone);

Это такой же взлом, как и вытеснение прототипа addEventListener() методом, который отслеживает каждую функцию-обработчик, но по крайней мере это можно использовать после того, как DOM уже подключен с другими событиями сценария.

Это также работает примерно так же, как и выше, используя jQuery clone() вместо cloneNode():

let original = $('#my-div');
let clone = original.clone();
original.replaceWith(clone);

Этот шаблон фактически не оставит обработчиков событий на элементе или его дочерних узлах, если только они не были определены с помощью атрибута , как onclick="foo()".

Ответ 6

Для jQuery off() удаляет из него все обработчики событий, добавленные jQuery.

$('#aspnetForm').off();

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