Javascript can';t删除我附加的事件侦听器
我在模块中附加了一个事件侦听器,使用Javascript can';t删除我附加的事件侦听器,javascript,addeventlistener,removeeventlistener,Javascript,Addeventlistener,Removeeventlistener,我在模块中附加了一个事件侦听器,使用 document.addEventListener('keydown', () => this.clickCatcherFunction(target_id)); 但当执行该函数时,该行 document.removeEventListener("keydown", () => this.clickCatcherFunction()); 不会删除侦听器。下次按下某个键时,它将执行ClickCatcher功能,但失败。我如何将创建它时使用的相同
document.addEventListener('keydown', () => this.clickCatcherFunction(target_id));
但当执行该函数时,该行
document.removeEventListener("keydown", () => this.clickCatcherFunction());
不会删除侦听器。下次按下某个键时,它将执行ClickCatcher功能,但失败。我如何将创建它时使用的相同函数传递给它以删除它
其他失败的尝试:
document.removeEventListener("keydown", this.clickCatcherFunction());
document.removeEventListener("keydown", clickCatcherFunction());
document.removeEventListener("keydown", clickCatcherFunction);
只能删除命名函数,而不能删除匿名函数,因为即使生成相同的匿名函数,它也不会与先前添加的函数的实例完全相同。您必须单独设置函数,如下所示:
function clickCather(evt){
. . .
}
然后您可以使用addEventListener(“单击”,clickCatcher)
和removeventlistener(“单击,clickCatcher”)添加和删除它因为您将引用内存中的同一个函数实例
请注意,使用addEventListener
和removeEventListener
时,您不调用函数(函数名称末尾没有括号),您只想引用它。。