我有以下javascript来激活某个时间
document.addEventListener('touchmove', function (e) { e.preventDefault(); }, false);
但是当我这样做时,我遇到了删除事件监听器的麻烦
document.removeEventListener('touchmove', function (e) { e.preventDefault(); }, false);
函数removeEventListener似乎不起作用。我对类似的案例进行了一些搜索,不幸的是我无法找到解决方案。我感谢任何帮助。
答案 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);
即使它们具有相同的代码,也不能使用其他匿名函数的第二个副本。