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

StackOverflow https://stackoverflow.com/questions/803936

Вопрос

Приведен следующий HTML-фрагмент:

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

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

Это было полезно?

Решение

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

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

Другие советы

С помощью jQuery

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

А затем переходите к добавлению своего собственного.

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

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

Видишь это для получения более подробной информации.

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

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

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

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

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

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

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

Удачи...

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top