【问题标题】:What is the purpose of jQuery's cleanData function? [duplicate]jQuery 的 cleanData 函数的目的是什么? [复制]
【发布时间】:2013-09-05 19:52:13
【问题描述】:

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

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

哪些数据在删除前会被清除? jQuery之外还有用例吗?

【问题讨论】:

  • 感谢您将此问题标记为重复问题,特别是当所引用的答案缺乏技术细节时,请在此处询问。

标签: javascript jquery dom memory-leaks removechild


【解决方案1】:

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

元素本身获得一个属性,该属性保存其在jQuery.cache 中的条目的键。这是唯一将元素和数据联系起来的东西。

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

因此,如果您要使用本机 .removeChild() 删除和销毁一个元素,您将销毁指向该数据的唯一链接。这就是为什么你必须不幸地使用 jQuery 来删除所有元素,以及为什么你不应该在 jQuery 旁边使用任何其他 DOM 库的原因。

【讨论】:

  • 所以,如果我说得对,那么在 jQuery 之外就不需要它了。
  • 是的。通常,未记录的函数是有原因的。
  • @Lilith2k3:是的,根本不需要使用它。它在需要时在内部使用。
猜你喜欢
  • 1970-01-01
  • 2020-06-04
  • 2012-01-11
  • 1970-01-01
  • 1970-01-01
  • 2015-05-29
  • 2011-10-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多