如何在附加了 .bind(this) 的回调上删除事件侦听器



如果我这样做:

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

然后在函数this.foo内部,然后用以下命令将其删除:

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

然后它起作用了。

但是,如果我这样做:

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

则不会删除该函数。

我能做些什么吗?我必须在foo中拥有正确的上下文。

this.foo.bind(this)返回的函数与函数this.foo不同。因此,您需要做的是保留对绑定返回的函数的引用

var handler = this.foo.bind(this);
document.addEventListener("mousedown", handler);
document.removeEventListener("mousedown", handler);

最新更新