如何删除EventListener?附件是它不起作用的一个快速例子。怎么才是正确的呢?
function test_function(a='', b='') {
console.log('test_function started. a='+a+', b='+b);
}
document.body.addEventListener('mousemove', ()=>{ test_function('testa', 'testb'); });
document.body.removeEventListener("mousemove", test_function );发布于 2022-08-24 10:07:53
test_function不是事件处理程序的事件侦听器函数。它是
()=>{ test_function('testa', 'testb')这个匿名函数。
在这个document.body.removeEventListener("mousemove", test_function );中,您将test_function的引用传递给removeEventListener。但实际的功能是()=>{ test_function('testa', 'testb')
为了使用removeEventListener,您可以以这种方式重构代码。
function test_function(a='', b='') {
console.log('test_function started. a='+a+', b='+b);
}
const handleMouseMove = () => test_function('testa', 'testb');
document.body.addEventListener('mousemove', handleMouseMove);
document.body.removeEventListener("mousemove", handleMouseMove);查看mdn文档,
https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/removeEventListener
https://stackoverflow.com/questions/73471141
复制相似问题