删除javascript事件侦听器

时间:2012-01-30 09:13:30

标签: javascript event-listener

我有以下javascript来激活某个时间

document.addEventListener('touchmove', function (e) { e.preventDefault(); }, false);

但是当我这样做时,我遇到了删除事件监听器的麻烦

document.removeEventListener('touchmove', function (e) { e.preventDefault(); }, false);

函数removeEventListener似乎不起作用。我对类似的案例进行了一些搜索,不幸的是我无法找到解决方案。我感谢任何帮助。

2 个答案:

答案 0 :(得分:13)

您正在向addEventListener调用发送匿名函数。使用命名函数并将其发送到removeEventListener,如下所示:

function handleTouchMove(e) {
  e.preventDefault();
}
document.addEventListener('touchmove', handleTouchMove, false);

document.removeEventListener('touchmove', handleTouchMove);

否则,你执行它的方式,你发送给removeEventListener的函数是一个完全不同的函数,即使它具有相同的内容。

答案 1 :(得分:2)

您必须传递实际相同的函数引用,如下所示:

function handleTouch(e) {
    e.preventDefault();
}

document.addEventListener('touchmove', handleTouch, false);

document.removeEventListener('touchmove', handleTouch, false);

即使它们具有相同的代码,也不能使用其他匿名函数的第二个副本。