jQuery的cleanData函数的目的是什么?

时间:2013-09-05 19:52:14

标签: javascript jquery dom memory-leaks removechild

在研究jQuery源代码时,我多次偶然发现了cleanData - 函数: jQuery.remove()调用它。其他功能也是如此。在删除DOM-Element之前调用cleanData的目的是什么?

jQuery的remove() - 方法是否优于简单的(removeChild),就像在fiddle中一样? 如果是这样,为什么会这样呢?该代码是否会导致内存泄漏?

什么是数据,在删除之前会被清除? 在jQuery之外是否有任何用例?

1 个答案:

答案 0 :(得分:1)

对于从jQuery方法获取事件处理程序,数据或执行某些其他操作的元素,jQuery将在jQuery.cache中为该元素创建一个条目。

元素本身获取一个属性,该属性保存其在jQuery.cache中的条目的键。这是唯一链接元素和数据的东西。

因此,当要删除元素时,jQuery需要使用元素上找到的键在jQuery.cache中查找条目,然后需要销毁相关数据。如果没有这样做,就会出现内存泄漏,因为一旦元素消失,就无法知道应该删除jQuery.cache数据。

因此,如果您要使用本机.removeChild()来删除和销毁元素,那么您将破坏该数据的唯一链接。这就是为什么你不得不使用jQuery来删除所有元素,以及为什么你不应该使用任何其他DOM库和jQuery。