在研究jQuery源代码时,我多次偶然发现了cleanData
- 函数:
jQuery.remove()调用它。其他功能也是如此。在删除DOM-Element之前调用cleanData
的目的是什么?
jQuery的remove()
- 方法是否优于简单的(removeChild),就像在fiddle中一样?
如果是这样,为什么会这样呢?该代码是否会导致内存泄漏?
什么是数据,在删除之前会被清除? 在jQuery之外是否有任何用例?
答案 0 :(得分:1)
对于从jQuery方法获取事件处理程序,数据或执行某些其他操作的元素,jQuery将在jQuery.cache
中为该元素创建一个条目。
元素本身获取一个属性,该属性保存其在jQuery.cache
中的条目的键。这是唯一链接元素和数据的东西。
因此,当要删除元素时,jQuery需要使用元素上找到的键在jQuery.cache
中查找条目,然后需要销毁相关数据。如果没有这样做,就会出现内存泄漏,因为一旦元素消失,就无法知道应该删除jQuery.cache
数据。
因此,如果您要使用本机.removeChild()
来删除和销毁元素,那么您将破坏该数据的唯一链接。这就是为什么你不得不使用jQuery来删除所有元素,以及为什么你不应该使用任何其他DOM库和jQuery。