[英]can't remove an event listener I attached
我在一个模块中附加了一个事件监听器
document.addEventListener('keydown', () => this.clickCatcherFunction(target_id));
但是当执行该功能时,该行
document.removeEventListener("keydown", () => this.clickCatcherFunction());
不会删除侦听器。 下次按下一个键时,它会执行clickCatcherFunction并失败。 我如何传递它与我用来创建它以删除它的相同功能?
其他失败的尝试:
document.removeEventListener("keydown", this.clickCatcherFunction());
document.removeEventListener("keydown", clickCatcherFunction());
document.removeEventListener("keydown", clickCatcherFunction);
只有命名功能,可以删除,而不是匿名功能,因为即使你作出相同的匿名函数,它不会是你以前添加的功能完全相同的实例 。 你必须单独设置你的功能,如下所示:
function clickCather(evt){
. . .
}
然后你可以使用addEventListener("click", clickCatcher)
和removeEventListener("click", clickCatcher);
添加和删除它removeEventListener("click", clickCatcher);
因为你将在内存中引用相同的函数实例。
并且,请注意,使用addEventListener
和removeEventListener
都不会调用函数(函数名末尾没有括号),您只想引用它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.