Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery delegated.off()不工作_Javascript_Jquery - Fatal编程技术网

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');
});