簡體   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