将自定义数据存储在dom元素中
Storing custom data in dom elements
这是错误的吗?如果是,为什么?
var elm = document.getElementById("myElm");
elm.customValue = {attr1 : "test", attr2 : "test"};
我知道如何使用数据属性,但我不想用所有这些属性混淆我的dom。
这在一些浏览器中引入了内存泄漏,因为您将本机C对象(DOM元素)和JS对象绑定在一起,而一些垃圾收集算法无法处理此问题。IE就是其中之一。
下面是一篇关于IE内存泄漏的MSDN文章:http://msdn.microsoft.com/en-us/library/ie/bb250448(v=vs.85).aspx
最重要的是,为什么不使用适当的可用工具?您不知道将来,无论是近还是远,您使用的任何自定义属性名称都将添加到该特定元素的w3c规范中。现在,你的代码突然被破坏了。
不要介意将自定义属性添加到已经定义了属性的元素会使代码成为维护噩梦。无论是你还是将来维护它的其他人,都会有一个"wtf"时刻,开发者试图弄清楚a)元素中添加了自定义属性,还是b)元素本身实际上是一个自定义对象。
最后,如果通过Ajax或动态HTML在dom中替换该元素,该怎么办?现在,属性不见了,您的代码也被破坏了。
您应该考虑HTML5数据属性。
来自该男子本人:http://ejohn.org/blog/html-5-data-attributes/
相关文章:
- 如何在DOM元素上按类型构建此函数
- DOM元素和angular元素之间的主要区别是什么
- 当带有渲染器的DOM元素不在屏幕顶部时,移动了场景的坐标
- 使用jquery创建dom元素会导致ie9出现拒绝访问错误
- 如何在使用Ractive.extend()时引用DOM元素
- 在d3中向DOM元素添加了图像,但现在它赢得了't过渡
- 如何'剪切'DOM元素并将其显示在其他位置
- 转换<a>使用jQuery将文本字符串转换为dom元素
- d3在数据更新时错误地附加了dom元素
- 访问VueJS中的DOM元素
- 在Meteor中如何查找DOM元素(渲染后)
- IE9-添加和删除DOM元素会破坏父keydown事件
- 未捕获错误:元素缓存中id为x的DOM元素与DOM中的元素不同
- 在 ng-if 编译后访问指令中的 DOM 元素
- spin.js/angular spinner:如何将spin定位到DOM元素中(包括plunker演示)
- 如何在dom元素中插入输入标记数据插件
- Mobile Safari、jQuery以及绑定到未来的DOM元素
- 从字符串创建dom元素时添加多个类
- 如何根据客户端的屏幕大小使用javascript更改DOM元素
- 为onClick-hander插入临时DOM元素