让我说我有这样的事情:
$('#mydiv').on('click', 'button', doSomething);
显然我希望点击所有按钮doSomething()
。现在让我们说我希望其中一个按钮不要这样做,而是做其他事情。
$('#mydiv').off('click', '.specialclass button');
这不起作用,但我需要它。有没有办法实现这个目标?我非常希望不必单独连接每个按钮。
.off()
documentation 的这一部分正在扼杀我:
要删除特定的委托事件处理程序,请提供选择器参数。选择器字符串必须与附加事件处理程序时传递给.on()的字符串完全匹配。
Here's a fiddle演示我正在尝试做的事情。
答案 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()方法首选在元素上附加和删除事件处理程序