2

假设我有这样的事情:

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

显然,我希望所有按钮都能doSomething()点击。现在假设我希望其中一个按钮不这​​样做,而是做其他事情。

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

这不起作用,但我需要它。有没有办法做到这一点?我非常希望不必单独连接每个按钮。

.off()文档的这一部分让我很生气:

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

这是一个演示我正在尝试做的事情的小提琴。

4

1 回答 1

4

您可以使用 jQuery 伪选择器:not()来排除搜索结果,它是 document 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() 方法来附加和删除元素上的事件处理程序

于 2012-12-20T01:35:35.787 回答