事件处理jQuery unclick()和unbind()事件?

时间:2020-03-06 14:35:58  来源:igfitidea点击:

我想将click事件添加到按钮元素上,然后再将其删除,但是我无法使unclick()或者unbind()事件按预期方式工作。在下面的代码中,按钮为"棕褐色"颜色,单击事件起作用。

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

如何从元素中删除事件?

解决方案

解除绑定是朋友。

$("#startButton").unbind('click')

没有诸如" unclick()"之类的东西。你从哪里得到那个的?

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

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

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

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

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

我们可能需要考虑其他选择:

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

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

否则我们可能会遇到想要在单击后立即取消绑定单击功能的情况,就像我必须做的那样:

$('#selector').click(function(event){
    alert(1);
    $(this).unbind(event);
});