.data( key, value )返回类型:jQuery
描述:在匹配的元素上存储任意数据。
-
增补版本:1.2.3.data( key, value )
-
增补版本:1.4.3.data( obj )
-
obj类型:Object要更新的数据的键值对对象。
-
.data()
方法允许我们把任何类型的数据附加到DOM元素上,以此避免了循环引用以及它引起的内存泄漏风险。
我们可以在一个元素上设置若干个不同的值,以后检索这些值:
1
2
3
4
5
|
|
在jQuery 1.4.3中,用.data(obj)
设置一个元素的数据对象,以扩展元素上原先存储的数据。
在jQuery 1.4.3以前(从jQuery 1.4开始),.data()
方法完全替换了所有的数据,而不仅是扩展数据对象。如果你正在使用第三方插件,完全替代替元素的数据对象也许是不可取的,因为插件也有可能设置数据。
jQuery 3改变了此方法的行为,把它对齐到Dataset API 规范文档。具体来说,jQuery 3把"-"(U+002D)的每个二字符序列转换成一个小写ASCII字母后面跟着字母的大写版本,遵照the algorithm of the Dataset API的定义。编写$( "body" ).data( { "my-name": "aValue" } ).data();
将返回{ myName: "aValue" }
。
由于浏览器与插件和外部代码交互的方式,.data()
方法不能在<object>
上面使用(除非它是一个Flash插件),也不能在<applet>
或<embed>
元素上使用。
补充说明:
- 请注意,针对XML文档中的数据设置,此方法当前并不提供跨平台支持,因为Internet Explorer 并不允许通过expando属性来附加数据。
-
undefined
不能被识别为数据值。调用.data( "name", undefined )
将返回调用此方法的jQuery对象,允许连缀。
示例:
把一个值存储在div元素上,然后从该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
|
|
演示:
.data( key )返回类型:Object
描述:返回针对jQuery集合中第一个元素存储的命名数据的值,它是用data(name, value)设置的,或者是用HTML5 data-*特性设置的。
-
增补版本:1.2.3.data( key )
-
key类型:String存储的数据的名称。
-
-
增补版本:1.4.data()
- 此签名没有任何参数。
.data()
方法允许我们以安全的方式把任何类型的数据附加到DOM元素上,避免循环引用以及它引起的内存泄漏风险。我们可以针对一个元素同时检索一些不同的值,或者设置不同的值:
1
2
|
|
上面的行弹出了设置在body
元素上的数据值的警告框。如果那个元素上根本没有设置数据,就会返回undefined
。
1
2
3
|
|
jQuery 3改变了此方法的行为,把它对齐到Dataset API specifications。具体来说,jQuery 3把“-”(U+002D)的每个二字符序列转换成一个小写ASCII字母后面跟着字母的大写版本,遵照the algorithm of the Dataset API的定义。编写$( "body" ).data( { "my-name": "aValue" } ).data();
将返回{ myName: "aValue" }
。
HTML5 data-* Attributes
自从jQuery 1.4.3以来,HTML 5 data- attributes将被自动推到jQuery的data对象。根据W3C HTML5 specification,带有嵌入的短横的特性的对待方式,在jQuery 1.6中已经做了改变。
例如,给定下面的HTML:
1
|
|
下面所有的jQuery代码都是能起作用的。
1
2
3
4
|
|
上面代码中第二个语句正确地引用到元素的data-last-value
特性。万一没有用传入的键存储数据,jQuery会搜索遍元素的特性,把一个驼峰大小写的字符串转换为短横字符串,然后在结果中前面加上data-
。因此,字符串lastValue
被转换为data-last-value
。
会做各种尝试,以把字符串转换成JavaScript值(这包括布尔值、数字、对象、数组和null)。一个值只会转换为数字,如果这样做的话不会改变值的表达式。例如,“1E02”和“100.000”都等于一个数字(数值为100),但是转换它们将改变它们的表达式,所以它们被留作字符串。字符串值“100”会被转换成数字100。
当数据特性是一个对象时(用“{”开头)或是一个数组时(用“[”开头),则会使用jQuery.parseJSON
,以解析字符串;它必须遵守valid JSON syntax,包括引起来的属性名称。如果值不可解析为一个JavaScript值,它会被留作字符串。
若要将此值的特性检索为字符串,而不作任何转换它的尝试,请使用attr()
方法。
第一次访问此数据属性,推加data-特性,然后不再访问或修改(然后所有的数据值都在jQuery中内部存储)。
不带参数地调用.data()
将把所有的值检索为一个JavaScript对象。此对象可以在一个变量中安全地缓存,直到用.data(obj)
方法设置一个新对象。直接使用对象来取得或设置值比制作对.data()
的单独调用来取得或设置每个值更快速。
1
2
3
4
5
|
|
补充说明:
- 注意,此方法当前并不提供跨平台支持,以在XML文档上设置数据,因为Internet Explorer 并不允许通过expando属性来附加数据。
示例:
取得针对一个元素存储,命名为“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
61
|
|