Javascript removeEventListener 不工作
尝试在 Javascript 中向元素添加和删除事件侦听器时,removeEventListener 函数可能无法按预期工作。当作为removeEventListener的第二个参数提供的匿名函数与最初分配给addEventListener的函数引用不同时,就会出现此问题。
理解问题
中根据提供的代码,使用匿名函数附加和删除事件侦听器:
area.addEventListener('click', function(event) { ... }, true); area.removeEventListener('click', function(event) { ... }, true);
但是,这些匿名函数是完全不同的对象。尽管它们可能执行相同的任务,但它们不是相同的引用。
解决方案
要正确删除事件侦听器,您必须提供与用于添加监听器。在 addEventListener 和 removeEventListener 调用外部定义一个命名函数:
function foo(event) { app.addSpot(event.clientX, event.clientY); app.addFlag = 1; } area.addEventListener('click', foo, true); area.removeEventListener('click', foo, true);
通过执行此操作,removeEventListener 函数可以识别最初附加的函数引用并成功分离事件侦听器。
以上是为什么我的 JavaScript removeEventListener 不工作?的详细内容。更多信息请关注PHP中文网其他相关文章!