问题与document.removeEventListener()

Kus*_*ush 2 javascript events event-handling addeventlistener

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

document.addEventListener(name, handler.bind(null, name, callback), false);
Run Code Online (Sandbox Code Playgroud)

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

document.removeEventListener(name, handler, false);
// or
document.removeEventListener(name, handler.bind(null), false);
Run Code Online (Sandbox Code Playgroud)

实际上并没有被删除。我已经尝试了各种修复程序,但似乎无法正常工作。

Sno*_*now 5

您需要保存对绑定函数的引用,以便removeEventListener以后可以使用它进行调用:

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

// later:

document.removeEventListener(name, boundHandler, false);
Run Code Online (Sandbox Code Playgroud)