在dom元素中存储自定义数据

时间:2012-02-11 16:49:44

标签: javascript dom

这是错的吗?如果是这样的话?

var elm = document.getElementById("myElm");
elm.customValue = {attr1 : "test", attr2 : "test"};

我理解如何使用数据属性,但我不想让所有这些属性混淆我的dom。

3 个答案:

答案 0 :(得分:7)

这会在某些浏览器中引入内存泄漏,因为您将本机C对象(DOM元素)和JS对象绑定在一起,而某些垃圾收集算法无法处理此问题。 IE就是其中之一。

这是一篇关于IE内存泄漏的MSDN文章:http://msdn.microsoft.com/en-us/library/ie/bb250448(v=vs.85).aspx

答案 1 :(得分:3)

最重要的是,你为什么不使用合适的工具呢?您不知道将来,近或远,您使用的任何自定义属性名称都将添加到该特定元素的w3c规范中。现在,你的代码突然崩溃了。

不用担心将自定义属性添加到已定义属性的元素会使您的代码成为维护的噩梦。无论是你还是其他人在将来维护它,都会有一个“wtf”时刻,开发人员试图确定a)是否将自定义属性添加到元素中或b)元素本身实际上是自定义对象。

最后,如果通过Ajax或动态HTML在dom中替换该元素会怎么样?现在该属性已经消失,您的代码已被破坏。

答案 2 :(得分:2)

您应该考虑HTML5数据属性。

来自男人本人:http://ejohn.org/blog/html-5-data-attributes/