9

我想将单击事件附加到按钮元素,然后将其删除,但我无法获取unclick()unbind()事件按预期工作。在下面的代码中,按钮是tan彩色的,并且单击事件有效。

window.onload = init; 
function init() {
    $("#startButton").css('background-color', 'beige').click(process_click);
    $("#startButton").css('background-color', 'tan').unclick();
}

如何从元素中删除事件?

4

4 回答 4

19

没有这样的事情unclick()。你从哪里得到那个的?

您可以通过调用 unbind 从元素中删除单个事件处理程序:

$("#startButton").unbind("click", process_click);

如果要删除所有处理程序,或者使用匿名函数作为处理程序,则可以省略第二个参数unbind()

$("#startButton").unbind("click");
于 2008-09-23T13:54:35.407 回答
6

或者您可能会遇到这样的情况,即您想在使用 click 功能后立即取消绑定,就像我必须这样做:

$('#selector').click(function(event){
    alert(1);
    $(this).unbind(event);
});
于 2010-09-15T15:09:18.390 回答
3

解绑是你的朋友。

$("#startButton").unbind('click')
于 2008-09-23T13:43:15.183 回答
0

您确定要解除绑定吗?如果以后你想一次又一次地绑定它怎么办?我不喜欢动态事件处理绑定/取消绑定,因为当从代码的不同点调用它们时,它们往往会失控。

您可能需要考虑其他选项:

  • 更改按钮“禁用”属性
  • 在“process_click”函数中实现你的逻辑

只是我的 2 美分,不是通用的解决方案。

于 2008-09-23T15:47:39.770 回答