不会删除并再次添加EventListener,这有问题吗?

时间:2014-05-11 19:19:56

标签: javascript addeventlistener

当用户点击' on'添加了一个EventListener:

document.addEventListener('mousemove', getCursorXY, false);

当用户点击“关闭”时不会删除EventListener,并且当用户点击' on'再次添加相同的EventListener:

document.addEventListener('mousemove', getCursorXY, false);

这有问题吗?那么有两个监听器正在运行,还是第一个被第二个覆盖?

2 个答案:

答案 0 :(得分:2)

使用addEventListener优于onclick等属性的优势在于,您可以在元素上附加尽可能多的事件处理程序。

这也意味着添加另一个事件处理程序会自动删除以前设置的事件处理程序,因为这会破坏目的,您必须使用removeEventListener手动删除它们。

document.removeEventListener('mousemove', getCursorXY, false);

答案 1 :(得分:1)

是的,您将为该事件触发多个事件侦听器。即使代码以某种方式设法正常工作,它也是低效的,你需要注意避免的事情。

浏览器会频繁触发mousemove事件,为此事件有效编码任何事件处理程序非常重要,并确保最终不会有大量的侦听器。有时候你需要多个听众,如果你需要的话,一定要做,但你不需要我所看到的。

我建议您只记录已添加侦听器的事实,并使用该事实避免两次添加侦听器。