javascript - document.removeEventListener() 的问题

标签 javascript events event-handling addeventlistener

我有一个创建事件监听器的函数:

document.addEventListener(name, handler.bind(null, name, callback), false);

我使用 .bind 来传递额外的参数,但是当我尝试删除它时:

document.removeEventListener(name, handler, false);
// or
document.removeEventListener(name, handler.bind(null), false);

不会实际被删除。我尝试了各种修复方法,但似乎无法使其正常工作。

最佳答案

您需要保存对绑定(bind)函数的引用,以便稍后可以使用它调用 removeEventListener:

const boundHandler = handler.bind(null, name, callback);
document.addEventListener(name, boundHandler, false);

// later:

document.removeEventListener(name, boundHandler, false);

关于javascript - document.removeEventListener() 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55214246/

相关文章:

cocoa - 我如何收到新窗口打开的通知?

javascript - 如何确保绑定(bind)到 hashChange 事件不冒泡?

javascript - 为什么只有所有其他 HTML 元素对 "click"使用react?

JavaScript - 重复函数,列出一定范围内的 'n' 个随机数,不重复

javascript - 无法理解函数的参数在特定代码段中如何工作

javascript - 完全禁用 Jquery UI 小部件

c# - 如何将 EventHandler 作为方法参数传递

c - C 中实时音频/图形 Linux 应用程序线程之间的排队/事件通信

javascript - 允许用户上传 HTML/JS 文件的风险

javascript - element.blur() 导致 Uncaught TypeError : elem. getAttribute 不是函数