使用jQuery / .data()避免内存泄漏

时间:2013-11-15 21:17:11

标签: javascript jquery dom

我正在使用jQuery动态创建HTML元素,现在需要针对它们存储JavaScript数据。但是,我现在担心内存泄漏,因为我从来没有在我的对象上实际调用'remove'。我'。''''''''''''''''''''''''''''''''''''''''''' jQuery的文档似乎暗示我应该调用remove来清理它在对象上的足迹 - 事件,数据等。

这在现代浏览器中是否是必须的,或者对元素的任何引用的消失是否会为我做这个?

另一种表达我问题的方法;这个脚本片段会泄漏内存吗?

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

    setTimeout(createElement, 10);
}

createElement();

就此而言,即使没有 .data()调用,这是否会泄漏内存?

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

1 个答案:

答案 0 :(得分:2)

来自http://api.jquery.com/jQuery.data/:“jQuery.data()方法允许我们以一种不受循环引用和内存泄漏安全的方式将任何类型的数据附加到DOM元素。我们可以检索几个不同的值一次一个元素,或一组。“

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