1

我有一个这样的事件:

var CountDemKeys;
document.body.addEventListener('keypress', function() { 
  CountDemKeys++;
  if (CountDemKeys % 10 === 0) {
    alert("WOO HOO!");
  }
});

在一个单独的函数中:

RemoveShizzle = function() {
  document.body.removeEventListener('keypress');
};

但事件仍然触发:(

注意:我也尝试将事件设置为nulldocument.body.addEventListener('keypress', null);

document.body.addEventListener('keypress', null);

没有快乐...

4

2 回答 2

5

您必须将与第二个参数相同的函数传递给removeEventListener.

可能有其他侦听器附加到'keypress'body 元素。

因此,在不提供原始函数的情况下,removeEventListener不知道要删除哪个侦听器。

var CountDemKeys;
var listener = function() { 
  CountDemKeys++;
  if (CountDemKeys % 10 === 0) {
    alert("WOO HOO!");
  }
};
document.body.addEventListener('keypress', listener);

RemoveShizzle = function() {
  document.body.removeEventListener('keypress', listener);
};
于 2013-09-06T09:10:06.673 回答
0

您很可能错过了removeEventListener的第二个参数。

另请注意,对于 MSIE 支持,您需要使用attachEvent

于 2013-09-06T09:12:22.590 回答