删除javascript事件监听器
我有以下javascript需要在某个时候激活删除javascript事件监听器,javascript,event-listener,Javascript,Event Listener,我有以下javascript需要在某个时候激活 document.addEventListener('touchmove', function (e) { e.preventDefault(); }, false); 但是,当我执行此操作时,移除事件侦听器时遇到问题 document.removeEventListener('touchmove', function (e) { e.preventDefault(); }, false); removeEventListener函数似乎不起作
document.addEventListener('touchmove', function (e) { e.preventDefault(); }, false);
但是,当我执行此操作时,移除事件侦听器时遇到问题
document.removeEventListener('touchmove', function (e) { e.preventDefault(); }, false);
removeEventListener函数似乎不起作用。我对类似的案例做了一点搜索,不幸的是我找不到解决方案。非常感谢您的帮助。您正在向addEventListener调用发送一个匿名函数。改为使用命名函数并将其发送到removeEventListener,如下所示:
function handleTouchMove(e) {
e.preventDefault();
}
document.addEventListener('touchmove', handleTouchMove, false);
document.removeEventListener('touchmove', handleTouchMove);
function handleTouch(e) {
e.preventDefault();
}
document.addEventListener('touchmove', handleTouch, false);
document.removeEventListener('touchmove', handleTouch, false);
否则,按照您的操作方式,发送给removeEventListener的函数是一个完全不同的函数,即使它具有相同的内容。您必须像这样传递实际相同的函数引用:
function handleTouchMove(e) {
e.preventDefault();
}
document.addEventListener('touchmove', handleTouchMove, false);
document.removeEventListener('touchmove', handleTouchMove);
function handleTouch(e) {
e.preventDefault();
}
document.addEventListener('touchmove', handleTouch, false);
document.removeEventListener('touchmove', handleTouch, false);
您不能使用其他匿名函数的第二个副本,即使其中包含相同的代码。进一步阅读正确用法:哇。谢谢霍华德的解释。我现在明白了。也感谢adreas的文章链接