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

Posted

技术标签:

【中文标题】事件处理 jQuery unclick() 和 unbind() 事件?【英文标题】:Event handling jQuery unclick() and unbind() events? 【发布时间】:2010-09-12 08:57:24 【问题描述】:

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

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

如何从元素中移除事件?

【问题讨论】:

【参考方案1】:

没有unclick() 这样的东西。你从哪里得到的?

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

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

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

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

【讨论】:

visualjquery.com/1.0.4.html unclick(fn) 从每个匹配的元素中移除绑定的点击事件。您必须传递在原始绑定方法中使用的相同函数。 感谢您的信息。我挖得更深了,发现 unclick() 在 jQuery 1.1 中被删除了。【参考方案2】:

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

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

【讨论】:

【参考方案3】:

unbind 是你的朋友。

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

【讨论】:

【参考方案4】:

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

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

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

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

【讨论】:

以上是关于事件处理 jQuery unclick() 和 unbind() 事件?的主要内容,如果未能解决你的问题,请参考以下文章

js input监听兼容事件

jQuery 事件处理API

jQuery的操作及事件处理

jquery,添加和删除事件处理程序[重复]

JavaScript 和 jQuery的事件

JavaScript之jQuery-4 jQuery事件(页面加载后执行事件处理事件冒泡事件对象模拟操作)