removeEventListener无法正常工作

fog*_*ogy 8 javascript event-listener

我不知道我做错了什么,但这是我正在做的一个例子,它似乎没有用.

someDom.addEventListener('mousemove',function(ev) {self.onInputMove(ev)},false);

someDom.removeEventListener('mousemove',self.onInputMove);
Run Code Online (Sandbox Code Playgroud)

执行removeEventListener代码,但它不会删除'mousemove'侦听器

Sea*_*ira 26

removeEventListener删除与添加的函数完全匹配的侦听器.

在这种情况下,addEventListener添加的功能是:

var some_func = function(ev) {
    self.onInputMove(ev);
};
Run Code Online (Sandbox Code Playgroud)

存储对实际功能的参考,你会很好.例如,以下内容应该有效:

someDom.addEventListener('mousemove',self.onInputMove,false);

someDom.removeEventListener('mousemove',self.onInputMove,false);
Run Code Online (Sandbox Code Playgroud)

  • removeEventListener的第三个参数也是必需的,所以你的例子应该是:`someDom.removeEventListener('mousemove',self.onInputMove,false);` (4认同)

cem*_*cem 6

onInputMove不是事件回调方法.所以你需要做类似的事情:

var event = function(ev) {self.onInputMove(ev)};
someDom.addEventListener('mousemove', event,false);

someDom.removeEventListener('mousemove', event, false);
Run Code Online (Sandbox Code Playgroud)

  • `event`不是你的eventhandler函数引用的好名字 (4认同)