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

时间:2019-03-26 19:01:00

标签: javascript addeventlistener removeeventlistener

我已使用

在模块中附加了事件侦听器
df.rename(columns={"colA": "col1"}, inplace=True)

但是执行该功能时,该行

document.addEventListener('keydown', () => this.clickCatcherFunction(target_id));

不会删除监听器。下次按下某个键时,它将执行clickCatcherFunction并失败。如何传递与创建它所使用的函数相同的功能以将其删除?

其他失败的尝试:

document.removeEventListener("keydown", () => this.clickCatcherFunction());

1 个答案:

答案 0 :(得分:3)

只能删除命名函数,不能删除匿名函数,因为即使您创建相同的匿名函数,它也不会与您使用的函数完全相同 instance 以前添加了。您必须像下面这样单独设置功能:

function clickCather(evt){
  .  .  .
}

然后,您可以使用addEventListener("click", clickCatcher)removeEventListener("click", clickCatcher);添加和删除它,因为您将引用内存中的同一函数实例。

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