如何将javascript对象与DOM节点相关联?

时间:2010-12-17 11:15:54

标签: javascript dom

我可以,如果是这样,我如何将javascript对象与DOM节点相关联?我的要求:

  • 真实对象,而不仅仅是JSON字符串化属性
  • 不应泄漏记忆
  • 也应该适用于IE8等非标准浏览器

我正在考虑使用一个全局数组来保存数据并将索引放在节点的属性中,但这会泄漏内存,因为当节点不在时,数组仍会引用数据那个DOM了。这是一个Web应用程序,所以这可能是一个问题。

3 个答案:

答案 0 :(得分:4)

嗯,jQuery有data系统,你可以尝试一下。他们说它没有内存泄漏。

答案 1 :(得分:1)

WeakMap的完美用例,假设您定位较新的浏览器(chrome 36,edge 12,IE 11,firefox 36,safari 7.1):

let map = new WeakMap();
let node = document.getElementById("unicorn");
let data = {};

window.map.set(node, data);

这不会泄漏,因为WeakMap的键被弱引用。

答案 2 :(得分:0)

因为标签没有提到jquery。用Mootools发布答案。

http://mootools.net/docs/core/Element/Element#Element:store