我有一个功能:
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);
如果条件重要吗?
答案 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>