返回值:jQuerydata(key, value)
在匹配的元素上随心所欲的存放数据。
-
1.2.3 新增data(key, value)
key (String) 一个字符串键,代表将要被存储的数据。value (Object) 新的数据值;可以是任何 Javascript 类型,包括数组和对象。 -
1.4.3 新增data(obj)
obj (Object) 用于设置或更新数据用的键值对。
.data()
方法允许我们安全的将任何类型的数据附加到DOM元素上,而不用担心循环引用和内存泄露之类的问题。
我们可以在单一元素上设置多个不同的值,之后就可以获取这些值:
$('body').data('foo', 52); $('body').data('bar', { myType: 'test', count: 40 }); $('body').data('foo'); // 52 $('body').data(); // {foo: 52, bar: { myType: 'test', count: 40 }}
从 jQuery 1.4.3 起,通过 .data(obj)
给元素设置数据时,会在元素原先存放的数据上扩展。jQuery 本身也通过 .data()
方法将信息存储在 'events' 和 'handle'中,并且 jQuery 也保留任何以下划线开头的数据名称,以供内部使用。
特别注意:从 jQuery 1.4 起到 jQuery 1.4.2 的这几个版本中, .data(obj) 方法会完全替换掉元素上的所有数据,而不是扩展数据对象。如果你使用了第三方插件,我们不建议完全替换掉元素上的数据对象,因为插件也有可能在上面存放数据。
由于浏览器与插件和外部代码的交互方式,导致 .data()
方法无法在 <object>
(除非它是一个Flash插件),<applet>
或者 <embed>
元素上存放数据。
补充说明:
- 注意,目前该方法不具有跨平台性,因为 IE 不支持在 XML 文档中通过 expando 属性进行数据存储。
示例:
在 div 元素上先存储再获取数据。
<!DOCTYPE html>
<html>
<head>
<style>
div { color:blue; }
span { color:red; }
</style>
<script src="jquery.min.js"></script>
</head>
<body>
<div>
The values stored were
<span></span>
and
<span></span>
</div>
<script>
$("div").data("test", { first: 16, last: "pizza!" });
$("span:first").text($("div").data("test").first);
$("span:last").text($("div").data("test").last);
</script>
</body>
</html>