我正在处理旧代码,我在代码中看到有很多事件添加了javascript addEventListener,有些在同一元素上添加了jQuery.on(),但在detach方法中它只使用了jQuery。 off()删除它们。所以我想知道这段代码是否会像编写预期的那些人一样工作(从dom元素中删除所有事件),或者用javascript添加的事件不会被删除。
答案 0 :(得分:1)
不是。
如果调查本机removeEventListener
api,您会发现它期望成功删除原始回调。据我所知,还没有删除节点上所有事件侦听器的本地方法。
jQuery充当了许多功能的中介。这样做是为了使它可以使用on
和off
之类的东西来保持对其api的控制。
如果您以跟踪添加的方式编写代码,这将不是问题,以便您以后可以执行某种清理步骤;但是,确实会给您带来负担。
现在,如果所有的浏览器都支持getEventListeners
,而Chrome确实支持,则情况可能会不同。阅读this,以了解为什么不希望这样做。