如何使用jQuery删除所有点击事件处理程序?

问题描述 投票:119回答:5

我遇到了一个问题。基本上,当用户点击页面上的 "编辑 "链接时,会运行以下Jquery代码。

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

这样一来,保存按钮的onClick事件就会被调用。saveQuestion() 方法,并传递被点击 "编辑 "链接的问题的ID。

但是如果在同一个会话中,用户点击了2个问题的编辑,那么就不会覆盖之前的 "编辑 "链接。click 事件处理程序,而是导致运行2个事件处理程序,其中一个可能会调用 saveQuestion(1) 而另一个则可能叫 saveQuestion(2). 这样做1个问题就会覆盖另一个问题。

有没有办法把以前的 click 已分配给按钮的事件?

javascript jquery click
5个回答
201
投票

你可以使用 关闭() 来删除一个事件,就像这样。

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

但这将删除 所有点击事件 绑定到这个元素上。如果带有SaveQuestion的函数是唯一的事件绑定,那么上面的操作就可以了。如果不是,则执行以下操作。

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

13
投票

是否有办法删除所有以前的点击事件 已经分配给一个按钮?

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

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

2
投票

如果你使用了....

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

...那么以后解除绑定就比较容易了。


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

使用jquery的 关闭关于

© www.soinside.com 2019 - 2024. All rights reserved.