jQuery委托.off()无法正常工作

时间:2018-07-24 14:41:55

标签: javascript jquery

我具有以下功能(为简单起见,将其简化):

b=((1.374), (6.978), (3.987))

因此,当我单击$(document).on('click', '.js-trigger', function() { console.log('click enabled'); }); 时,会收到console.log消息,到目前为止一切正常。然后,一旦我调整窗口大小,它应该停止执行此功能。我尝试了以下代码:

.js-trigger

然后,当我单击$(window).resize(function() { $(document).off('click', '.js-trigger'); }); 时,它应该不再输出console.log消息,但仍然可以!我尝试了许多不同的方法,但是.js-trigger事件似乎从未成功发生过……我在做什么错了?

有趣的是,如果我将其更改为此:

off()

它可以按预期工作,但是我需要委派事件,因为有时页面加载时DOM中不存在$('.js-trigger').on('click', function() { console.log('click enabled'); }); $(window).resize(function() { $('.js-trigger').off(); }); ...

1 个答案:

答案 0 :(得分:0)

最简单的方法之一是修改委托事件侦听器,以使子选择器具有附加条件。

$(document).on('click', '.js-trigger:not(.ignore)', function() {
  console.log('click enabled');
});

然后为那些您不希望发生逻辑的人添加忽略类。或您选择的任何条件逻辑。