【问题标题】:How to removeEventListener on a callback with .bind(this) attached如何在附加了.bind(this)的回调中删除EventListener
【发布时间】:2016-05-10 11:34:46
【问题描述】:

如果我这样做了

document.addEventListener("mousedown", this.foo);

然后在函数 this.foo 中,然后用

将其删除
document.removeEventListener("mousedown", this.foo);

然后就可以了。

但是,如果我这样做 document.addEventListener("mousedown", this.foo.bind(this));

那么该函数不会被移除。

有什么我可以做的吗?我必须在 foo 中有正确的上下文。

【问题讨论】:

  • 您必须存储对this.foo.bind(this)返回的函数的引用。

标签: javascript events javascript-events


【解决方案1】:

this.foo.bind(this) 正在返回一个与函数 this.foo 不同的函数。所以,你需要做的是保持对 bind 返回的函数的引用

var handler = this.foo.bind(this);

document.addEventListener("mousedown", handler);

document.removeEventListener("mousedown", handler);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-11
    • 2014-08-08
    • 1970-01-01
    • 1970-01-01
    • 2020-04-19
    • 2017-02-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多