一尘不染

JavaScript removeEventListener不起作用

javascript

我有以下代码添加eventListener

 area.addEventListener('click',function(event) {
              app.addSpot(event.clientX,event.clientY);
              app.addFlag = 1;
          },true);

它按预期方式正常工作。.稍后在另一个功能中,我尝试使用以下代码删除事件侦听器

 area.removeEventListener('click',function(event) {
              app.addSpot(event.clientX,event.clientY);
              app.addFlag = 1;
          },true);

但是偶数监听器没有被删除..为什么会发生?removeEventListener()是否有问题?注意:此处区域类似于document.getElementById(’myId’)


阅读 369

收藏
2020-05-01

共1个答案

一尘不染

这是因为两个匿名函数是完全不同的函数。您removeEventListener的参数不是对先前附加的函数对象的引用。

function foo(event) {
              app.addSpot(event.clientX,event.clientY);
              app.addFlag = 1;
          }
 area.addEventListener('click',foo,true);
 area.removeEventListener('click',foo,true);
2020-05-01