关闭选择中特定项目的事件

时间:2012-12-20 01:32:55

标签: jquery event-delegation

让我说我有这样的事情:

$('#mydiv').on('click', 'button', doSomething);

显然我希望点击所有按钮doSomething()。现在让我们说我希望其中一个按钮不要这样做,而是做其他事情。

$('#mydiv').off('click', '.specialclass button');

这不起作用,但我需要它。有没有办法实现这个目标?我非常希望不必单独连接每个按钮。

.off() documentation 的这一部分正在扼杀我:

  

要删除特定的委托事件处理程序,请提供选择器参数。选择器字符串必须与附加事件处理程序时传递给.on()的字符串完全匹配。

Here's a fiddle演示我正在尝试做的事情。

1 个答案:

答案 0 :(得分:4)

您可以使用jQuery伪选择器:not()排除搜索结果,它是文档here

$('#mydiv').on('click', 'button:not(.specialclass)', doSomething);

然后您可以单独指定具体案例:

$('.specialclass').on('click', function() { console.log('sup'; });

你也可以使用unbind来关闭jQuery中的事件。

$('div').unbind('click');​

虽然没有弃用,但根据文档:

  

从jQuery 1.7开始,.on()和.off()方法首选在元素上附加和删除事件处理程序