DOM2级删除事件不能直接使用匿名函数。

来源:2-3 DOM2级事件处理程序

bonorise

2016-07-05 00:07

btn3.addEventListener('click',function(){alert("this.value");},false); //添加事件有效

btn3.removeEventListener('click',function(){alert("this.value");},false);  //删除事件无效

写回答 关注

2回答

  • weibo_死去的阿呆_0
    2017-03-28 10:05:48

    很好的解释,刚刚也是迷惑这件事。

  • bonorise
    2016-07-05 00:11:45

    搞了半天自己百度弄懂了。因为匿名函数看起来是一样的,其实是两个不同的对象。

    btn3.addEventListener('click',function(){alert("this.value");},false); 

    btn3.removeEventListener('click',function(){alert("this.value");},false);

    这两行代码中的function(){alert(alert("this.value"));}看上去是同一个东西,实际上是不同的对象,而removeEventListener要求函数必须一样。

    所以addEventListener最好还是用将匿名函数赋值给某个变量

    addEventListener('click',showValue,false);

    removeEventListener('click',showValue,false);

    这样就不会出bug了。

    harry2...

    漂亮,盗取你的劳动成果。

    2016-07-27 10:03:58

    共 1 条回复 >

DOM事件探秘

DOM事件?本课程会通过实例来给小伙伴们讲解如何使用这些事件

99545 学习 · 1197 问题

查看课程

相似问题