jQuery-.off()无法删除事件监听器

时间:2020-01-17 04:42:42

标签: javascript jquery

我有一个功能:

const foo = () => {
    // blablabla
};

我首先添加一个事件侦听器:

$('body').on('click', foo);

然后我尝试将其删除,但失败:

$('body').off('click', foo);

只能与其他所有事件一起删除:

$('body').off('click');

更新:

我尝试使用addEventListener和removeEventListener,但仍然无法正常工作。


更明确:

condition ? $('body').on('click', foo) : $('body').off('click', foo);

如果条件重要吗?

1 个答案:

答案 0 :(得分:1)

如果要删除事件处理程序,则应使用event.namespace

另外,将事件处理程序附加到document而不是body

const foo = () => {
  console.log('blablabla foo')
};
const foo2 = () => {
  console.log('blablabla foo2')
};


$(document).on('click', foo);
$(document).on('click.foo2', foo2);
$(document).off('click.foo2', foo2);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>