Javascript jQuery delegated.off()不工作
我有以下功能(为了简单起见,将其精简): 因此,当我点击Javascript jQuery delegated.off()不工作,javascript,jquery,Javascript,Jquery,我有以下功能(为了简单起见,将其精简): 因此,当我点击.js trigger时,我得到console.log消息,到目前为止一切正常。然后,只要我调整窗口大小,它就会停止执行此函数。我尝试了以下代码: $(window).resize(function() { $(document).off('click', '.js-trigger'); }); 然后,当我点击.js trigger时,它应该不再输出console.log消息,但它仍然会输出!我尝试了许多不同的变体,但off(
.js trigger
时,我得到console.log消息,到目前为止一切正常。然后,只要我调整窗口大小,它就会停止执行此函数。我尝试了以下代码:
$(window).resize(function() {
$(document).off('click', '.js-trigger');
});
然后,当我点击.js trigger
时,它应该不再输出console.log消息,但它仍然会输出!我尝试了许多不同的变体,但off()
事件似乎从未成功发生过。。。我做错了什么
有趣的是,如果我将其更改为:
$('.js-trigger').on('click', function() {
console.log('click enabled');
});
$(window).resize(function() {
$('.js-trigger').off();
});
它按预期工作,但我需要委派事件,因为有时页面加载时DOM中不存在
.js触发器
最简单的方法之一是修改委托事件侦听器,使其在子选择器上具有额外的条件
$(document).on('click', '.js-trigger:not(.ignore)', function() {
console.log('click enabled');
});
然后,对于那些不希望逻辑发生的对象,添加ignore类。或者您选择的任何条件逻辑。使用
one()
代替?无法复制问题,您的代码工作正常:@不,那么它只触发一次,我需要它每次并发触发…我明白了,在这种情况下,命名函数会不工作吗<代码>$(文档)。打开('click','js trigger',myfunction,然后再打开($(文档)。关闭('click',myfunction)
Afaik您仍然需要将相同的选择器传递到off
。但是如上所述,问题中的代码已经起作用了…谢谢!我最终使用了这种技术,使代码的其他部分也变得简单了一些:)@Taplar
$(document).on('click', '.js-trigger:not(.ignore)', function() {
console.log('click enabled');
});