首页  >  文章  >  web前端  >  为什么我的 JavaScript removeEventListener 不工作?

为什么我的 JavaScript removeEventListener 不工作?

Linda Hamilton
Linda Hamilton原创
2024-11-02 17:04:03836浏览

Why Isn't My JavaScript removeEventListener Working?

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn