2012-01-30 169 views
4

我这下面的JavaScript来激活某个删除的JavaScript事件监听器:

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

但我有麻烦,移除事件侦听器时一些我这样做

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

功能removeEventListener似乎没有工作。我对类似案例进行了一些搜索,很不幸找不到解决方案。我感谢任何帮助。

回答

12

您正在向addEventListener调用发送一个匿名函数。使用命名函数,然后发送给removeEventListener,像这样:

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

document.removeEventListener('touchmove', handleTouchMove); 

否则,你做对了,你送到removeEventListener函数是一个完全不同的功能,尽管它有相同的内容。

+1

进一步阅读正确的用法:https://developer.mozilla.org/en/DOM/element.removeEventListener – 2012-01-30 09:18:29

+0

哇。感谢霍华德为此并解释。我现在知道了。也感谢adreas文章链接 – 2012-01-30 09:24:20

2

你必须通过实际的功能相同的参考这样的:

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

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

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

无法使用,即使他们有他们相同的代码不同的匿名函数的第二个副本。

+0

我明白了,我不知道这一点。非常感谢你 – 2012-01-30 09:23:17