2012-01-30 278 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