jQuery off 方法是否删除了使用 addEventListener 添加的事件侦听器?
Does jQuery off method remove event listeners added with addEventListener?
我正在处理旧代码,我在代码中看到有许多事件是用 javascript addEventListener 添加的,有些事件是在同一元素上用 jQuery.on() 添加的,但在detach 方法它仅用于 jQuery.off() 来删除它们。所以我想知道这段代码是否会像编写它的人预期的那样工作(从 dom 元素中删除所有事件)或者添加了 javascript 的事件不会被删除。
没有。
如果您调查本机 removeEventListener
api,您会发现它需要原始回调才能成功删除。据我所知,没有本地方法可以删除节点上的所有事件侦听器。
jQuery 充当其大部分工作的中介。它这样做是为了可以通过 on
和 off
.
等方式保持对其 api 的控制
如果您以跟踪添加的方式编写代码,以便稍后可以执行某种清理步骤,那么这将不是问题;然而,它确实让你承担了责任。
现在,如果所有浏览器都像 Chrome 一样支持 getEventListeners
,情况可能会有所不同。阅读 this 了解为什么这是不可取的。
我正在处理旧代码,我在代码中看到有许多事件是用 javascript addEventListener 添加的,有些事件是在同一元素上用 jQuery.on() 添加的,但在detach 方法它仅用于 jQuery.off() 来删除它们。所以我想知道这段代码是否会像编写它的人预期的那样工作(从 dom 元素中删除所有事件)或者添加了 javascript 的事件不会被删除。
没有。
如果您调查本机 removeEventListener
api,您会发现它需要原始回调才能成功删除。据我所知,没有本地方法可以删除节点上的所有事件侦听器。
jQuery 充当其大部分工作的中介。它这样做是为了可以通过 on
和 off
.
如果您以跟踪添加的方式编写代码,以便稍后可以执行某种清理步骤,那么这将不是问题;然而,它确实让你承担了责任。
现在,如果所有浏览器都像 Chrome 一样支持 getEventListeners
,情况可能会有所不同。阅读 this 了解为什么这是不可取的。