由于可能存在内存泄漏,将属性值直接存储在 DOM 元素上是有风险的。如果您仍然在使用 jQuery,那么该.data()
机制是跟踪每个元素信息的绝妙且安全的方法。它也允许存储任意 JavaScript 数据结构,而不仅仅是字符串。
编辑——当您的 HTML 标记包含data-foo
属性时,这些属性会在访问键时被隐式读取。也就是说,如果您的 HTML 如下所示:
<div id="div1" data-purpose="container">
然后在 jQuery 中:
alert( $('#div1').data('purpose') ); // alerts "container"
此外,jQuery 还会对属性值进行一些“智能”分析。如果一个值看起来像一个数字,jQuery 将返回一个数字,而不是一个字符串。如果它看起来像 JSON,它会为您反序列化 JSON。
编辑——这是一个很好的技巧:在 Chrome 开发者控制台(“控制台”视图)中,您可以输入 JavaScript 表达式并对其进行评估。评估始终在您正在处理的页面的上下文中完成。如果您从“元素”视图中选择一个元素,那么在控制台中,JavaScript 符号$0
将引用该选定的 DOM 元素。因此,您始终可以通过转到控制台并键入以下内容来检查元素的“数据”映射:
$($0).data("something");
如果不带参数调用该.data()
函数,则返回所有键/值对:
$($0).data();