事件处理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); });