Как очистить / удалить обработчик событий JavaScript? - PullRequest
56 голосов
/ 29 апреля 2009

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

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

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

Ответы [ 6 ]

81 голосов
/ 29 апреля 2009

Чтобы сделать это без каких-либо библиотек:

document.getElementById("aspnetForm").onsubmit = null;
24 голосов
/ 29 апреля 2009

с jQuery

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

А затем добавьте свое собственное.

11 голосов
/ 10 июня 2010

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

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

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

2 голосов
/ 08 июня 2018

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

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

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

2 голосов
/ 29 марта 2011

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

0 голосов
/ 12 декабря 2017

Если вы хотите удалить ALL event-handlers на element and its child-nodes и сохраните только HTML structure, мы можем работать с jQuery's clone () :

var original, clone;
//
original = $('#my-div');
clone = original.clone();
//
original.replaceWith(clone);

Это будет эффективно не оставлять event-handlers на element или child-nodes.

Удачи ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...