我不知道我做错了什么,但这里有一个我正在做的例子,它似乎不起作用。
someDom.addEventListener('mousemove',function(ev) {self.onInputMove(ev)},false);
someDom.removeEventListener('mousemove',self.onInputMove);
removeEventListener的代码已执行,但它并没有移除'mousemove'监听器。
我不知道我做错了什么,但这里有一个我正在做的例子,它似乎不起作用。
someDom.addEventListener('mousemove',function(ev) {self.onInputMove(ev)},false);
someDom.removeEventListener('mousemove',self.onInputMove);
removeEventListener的代码已执行,但它并没有移除'mousemove'监听器。
removeEventListener
会移除与添加的函数完全匹配的侦听器。
在这种情况下,addEventListener
添加的函数是:
var some_func = function(ev) {
self.onInputMove(ev);
};
存储一个对实际函数的引用,就可以解决问题。例如,以下代码应该可以工作:
someDom.addEventListener('mousemove',self.onInputMove,false);
someDom.removeEventListener('mousemove',self.onInputMove,false);
onInputMove
不是事件回调方法,因此您需要执行以下操作:
var event = function(ev) {self.onInputMove(ev)};
someDom.addEventListener('mousemove', event,false);
someDom.removeEventListener('mousemove', event, false);
someDom.removeEventListener('mousemove', event, false);
。 - meouwelement.onmousemove = function(e) {
// Some code here...
alert("Mouse moved!");
};
element.onmousemove = null;
完成了!
希望这能帮助你们!
这个问题在谷歌搜索中排名第一。除了已经提到的答案之外,这里还有一个有趣的事实值得注意:
如果在addEventListener()中忽略第三个可选变量useCapture/useBubble(因为它默认为false),在使用相同的回调名称删除相同的事件监听器时会创建一些问题。我在使用Chrome时遇到了这个问题。其他浏览器不确定。
所以要明确地将第三个变量命名为"false"。
someDom.removeEventListener('mousemove', self.onInputMove, false);
- meouwremoveEventListener
中的第三个参数是什么?我需要在addEventListener
中使用true
作为第三个参数,这样我就可以防止默认的鼠标点击(打开链接),因此我不能将其设置为false
。 - user924add
和removeEventListener
中都使用true
,它将起作用 - 潜在问题是添加的函数必须与被删除的函数完全相同。 - Sean Vieira