it-swarm.com.ru

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

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

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

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

54
Jordan Terrell

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

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

С помощью jQuery

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

А затем продолжайте добавлять свои собственные.

24
Peter Bailey

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

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

Смотрите это для более подробной информации.

11
Ryan

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

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

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

2
zwcloud

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

2
Brian DiCasa

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

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

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

Удачи...

0
Akash