我浏览了jQuery文档以获得这个简单问题的答案:
Does
replaceWith()
callremove()
ordetach()
under the hood?
解决方法
看看jQuery(2.1.1)的源代码,你提出两个不同的问题.
> jQuery的replaceWith()是否删除事件处理程序?
是. jQuery calls cleanData()
,它是删除元素上的所有数据的内部方法.由于jQuery事件处理程序存储在元素数据中,所以它们也将被清理.
cleanData()还可以通过调用jQuery.removeEvent()(另一种内部方法)来删除附加到元素的事件处理程序,该元素触发存储在元素数据中的所有事件处理程序的执行.
> replaceWith()调用remove()或detach()在引擎盖下?
调用remove()的唯一时间是否没有提供replaceWith()的参数; jQuery对待它就像你调用remove()而不是replaceWith();
TL; DR:jQuery将为您清理所有内容,因此不应有内存泄漏的风险.