addEventListener具有命名函数和参数

时间:2018-06-12 11:34:46

标签: javascript

我知道有很多类似的问题,但不知何故 我没有找到任何关于这个问题的东西 - 你能指出我正确的方向

假设我们有一个功能

window.logMeThis = function(msg){
    console.log(msg);
}

然后我需要添加一个事件监听器

window.addEventListener('keypress', window.logMeThis.bind(null, "something"));

起初看起来很好 - 但.bind会创建一个新的fn

现在我无法删除监听器

window.removeEventListener('keypress', window.logMeThis);

3 个答案:

答案 0 :(得分:3)

你可以这样做:

window.logMeThis = function(msg){
    console.log(msg);
}
var myFunc = window.logMeThis.bind(null, "something");
window.addEventListener('keypress', myFunc);

要删除侦听器,只需执行此操作:

window.removeEventListener('keypress', myFunc);

基本上,你需要有一个函数的引用来删除它。

答案 1 :(得分:0)

如果必须将函数绑定到特定上下文,则可以执行以下操作:

var boundFunction = window.logMeThis.bind(null, "something");
window.addEventListener('keypress', boundFunction);

现在您可以参考删除它的功能。

答案 2 :(得分:0)

你是对的:

  

此方法创建一个函数,其正文与函数类似   它被称为

只需传递现有函数,您就可以像这样引用它:

var i = 0;
    window.logMeThis = function(msg){
        console.log(msg+''+i);

      i++;
    }
    window.addEventListener('keypress', window.logMeThis, false);
    window.removeEventListener('keypress', window.logMeThis, false);