我正在使用jQuery动态创建HTML元素,现在需要针对它们存储JavaScript数据。但是,我现在担心内存泄漏,因为我从未在对象上实际调用过“删除”。我“.append”和“.detach”它们,但从不“.remove”。 jQuery的文档似乎建议我应该调用remove来清理它在对象上的足迹-事件,数据等。

在现代浏览器中这是否是绝对必要的,还是对元素的任何引用消失都对我有用吗?

表达我的问题的另一种方式;该脚本片段是否会泄漏内存?

function createElement()
{
    var newDiv = $("<div>")
       .data("test", "test data")
       .appendTo(document.body)
       .detach();

    setTimeout(createElement, 10);
}

createElement();

为此,即使没有.data()调用,此泄漏内存是否也存在?

我对支持非常老的浏览器不感兴趣。基本上是IE9和更好的版本。

最佳答案

http://api.jquery.com/jQuery.data/中:“jQuery.data()方法允许我们以一种安全的方式将任何类型的数据附加到DOM元素上,以防止循环引用,从而避免内存泄漏。我们可以为单个元素检索几个不同的值时间或作为一个集合。”

另外,请不要忘记可以使用HTML5 data- *属性来存储数据。

10-06 05:27
查看更多