如何删除Jquery中的所有Click事件处理程序

时间:2009-05-05 14:26:43

标签: javascript jquery click

我遇到了问题。基本上,当用户单击页面上的“编辑”链接时,将运行以下Jquery代码:

$("#saveBtn").click(function () {
    saveQuestion(id);
});

通过执行此操作,保存按钮的onClick事件会调用saveQuestion()方法并传递已单击“编辑”链接的问题的ID。

但是如果在同一个会话中用户点击2个问题的编辑,那么它不会覆盖以前的click事件处理程序,而是会导致2个事件处理程序运行,其中一个可能调用saveQuestion(1)并且另一个可能会调用saveQuestion(2)。通过这样做,1个问题会覆盖另一个。

有没有办法删除已分配给按钮的所有先前click个事件?

5 个答案:

答案 0 :(得分:193)

您可以使用off()删除类似的事件:

$("#saveBtn").off("click");

但这将删除绑定到此元素的所有点击事件。如果具有SaveQuestion的函数是唯一绑定的事件,则上述操作将执行此操作。如果不这样做:

$("#saveBtn").off("click").click(function() { saveQuestion(id); });

答案 1 :(得分:13)

  

有没有办法删除已分配给按钮的所有先前点击事件?

$('#saveBtn').unbind('click').click(function(){saveQuestion(id)});

答案 2 :(得分:7)

$('#saveBtn').off('click').click(function(){saveQuestion(id)});

答案 3 :(得分:2)

如果你用过......

$(function(){
    function myFunc() {
        // ... do something ...
    };
    $('#saveBtn').click(myFunc);
});

...然后以后更容易解开。

答案 4 :(得分:0)

$('#saveBtn').off('click').on('click',function(){
   saveQuestion(id)
});

使用jquery' offon