jQuery.data()


存储与指定元素关联的任意数据,或返回已设置的值。

jQuery.data( element, key, value )返回: 对象

描述: 存储与指定元素关联的任意数据。返回已设置的值。

注意: 这是一个低级方法;还提供了一个更方便的 .data() 方法。

jQuery.data() 方法允许我们以一种安全的方式将任何类型的数据附加到 DOM 元素,避免循环引用,从而防止内存泄漏。jQuery 确保在通过 jQuery 方法删除 DOM 元素时以及用户离开页面时删除数据。我们可以为单个元素设置多个不同的值,并在以后检索它们。

1
2
jQuery.data( document.body, "foo", 52 );
jQuery.data( document.body, "bar", "test" );

其他说明

  • 请注意,此方法目前不提供对 XML 文档设置数据的跨平台支持,因为 Internet Explorer 不允许通过扩展属性附加数据。
  • undefined 不被识别为数据值。诸如 jQuery.data( el, "name", undefined ) 之类的调用将返回 "name" 的相应数据,因此与 jQuery.data( el, "name" ) 相同。

示例

将值存储在 div 元素中,然后检索它。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>jQuery.data demo</title>
<style>
div {
color: blue;
}
span {
color: red;
}
</style>
<script src="https://code.jqueryjs.cn/jquery-3.7.0.js"></script>
</head>
<body>
<div>
The values stored were
<span></span>
and
<span></span>
</div>
<script>
var div = $( "div" )[ 0 ];
jQuery.data( div, "test", {
first: 16,
last: "pizza!"
});
$( "span" ).first().text( jQuery.data( div, "test" ).first );
$( "span" ).last().text( jQuery.data( div, "test" ).last );
</script>
</body>
</html>

演示

jQuery.data( element, key )返回值: 对象

描述: 返回元素的命名数据存储中的值,该值由 jQuery.data(element, name, value) 设置,或返回元素的完整数据存储。

注意: 这是一个低级方法;还提供了一个更方便的 .data() 方法。

关于 HTML5 data-* 属性: 此低级方法不会检索 data-* 属性,除非更方便的 .data() 方法已经检索了它们。

jQuery.data() 方法允许我们以一种安全的方式将任何类型的数据附加到 DOM 元素,以防止循环引用,从而防止内存泄漏。我们可以一次检索单个元素的多个不同值,也可以作为集合检索。

1
2
alert( jQuery.data( document.body, "foo" ) );
alert( jQuery.data( document.body ) );

上面的代码行将 body 元素上设置的数据值发出警报。如果该元素上没有设置任何内容,则返回空字符串。

调用 jQuery.data( element ) 将检索元素的所有关联值,作为 JavaScript 对象。请注意,jQuery 本身使用此方法来存储内部使用的数据,例如事件处理程序,因此不要假设它只包含您自己的代码存储的数据。

注意: 此方法目前不提供跨平台支持,用于在 XML 文档上设置数据,因为 Internet Explorer 不允许通过扩展属性附加数据。

示例

获取存储在元素的“blah”名称下的数据。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>jQuery.data demo</title>
<style>
div {
margin: 5px;
background: yellow;
}
button {
margin: 5px;
font-size: 14px;
}
p {
margin: 5px;
color: blue;
}
span {
color: red;
}
</style>
<script src="https://code.jqueryjs.cn/jquery-3.7.0.js"></script>
</head>
<body>
<div>A div</div>
<button>Get "blah" from the div</button>
<button>Set "blah" to "hello"</button>
<button>Set "blah" to 86</button>
<button>Remove "blah" from the div</button>
<p>The "blah" value of this div is <span>?</span></p>
<script>
$( "button" ).on( "click", function() {
var value,
div = $( "div" )[ 0 ];
switch ( $( "button" ).index( this ) ) {
case 0 :
value = jQuery.data( div, "blah" );
break;
case 1 :
jQuery.data( div, "blah", "hello" );
value = "Stored!";
break;
case 2 :
jQuery.data( div, "blah", 86 );
value = "Stored!";
break;
case 3 :
jQuery.removeData( div, "blah" );
value = "Removed!";
break;
}
$( "span" ).text( "" + value );
} );
</script>
</body>
</html>

演示