如何清除/删除JavaScript事件处理程序?

时间:2009-04-29 19:38:33

标签: javascript html javascript-events

给出以下HTML片段:

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

我需要删除/清除onsubmit事件的处理程序,并使用jQuery或任何其他JavaScript使用方式注册我自己的处理程序。

6 个答案:

答案 0 :(得分:81)

要在没有任何库的情况下执行此操作:

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

答案 1 :(得分:24)

使用jQuery

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

然后继续添加自己的。

答案 2 :(得分:11)

试试这个,这对我有用:

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

有关详细信息,请参阅this

答案 3 :(得分:2)

对于jQuery,如果使用.live绑定事件处理程序,则可以使用.die取消绑定与.live绑定的所有实例。

答案 4 :(得分:2)

对于jQuery,off()删除了jQuery添加的所有事件处理程序。

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

不带参数调用.off()会删除附加到元素的所有处理程序。

答案 5 :(得分:0)

如果您要删除event-handlers上的所有 element and its child-nodes仅<{1}} ,我们可以使用{ {1}} clone()

HTML structure

这将有效地jQuery's或其var original, clone; // original = $('#my-div'); clone = original.clone(); // original.replaceWith(clone); 上不留event-handlers

祝你好运......