繁体   English   中英

无法删除我附加的事件监听器

[英]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); 因为你将在内存中引用相同的函数实例。

并且,请注意,使用addEventListenerremoveEventListener都不会调用函数(函数名末尾没有括号),您只想引用它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM