导航菜单
首页 >  jQuerydata 方法  > .data() : 在匹配元素上存储任意相关数据. 返回匹配的元素集合中的第一个元素的给定名称的数据存储的值。 通过.data(name, value)或HTML5 data

.data() : 在匹配元素上存储任意相关数据. 返回匹配的元素集合中的第一个元素的给定名称的数据存储的值。 通过.data(name, value)或HTML5 data

.data()方法允许我们在DOM元素上附加任意类型的数据,避免了循环引用的内存泄漏风险。我们可以在一个元素上设置不同的值,并获取这些值:

1 2 alert($('body').data('foo'));alert($('body').data());

上面两行会显示先前设置在 body元素上设置的值。若果那个元素上没有设置任何值,那么将返回undefined。

1 2 3 alert( $("body").data("foo")); //undefined$("body").data("bar", "foobar");alert( $("body").data("bar")); //foobar HTML5 data-* Attributes(HTML5 data-* 属性)

从jQuery 1.4.3起, HTML 5 data- 属性将自动被引用到jQuery的数据对象中。嵌入式破折号处理属性( attributes)的方式在 jQuery 1.6 中已经改变,以使之符合W3C HTML5 规范.

举个例子, 给定下面的HTML:

1

下面所有的 jQuery 代码都能运行。

1 2 3 4 $("div").data("role") === "page";$("div").data("lastValue") === 43;$("div").data("hidden") === true;$("div").data("options").name === "John";

每次尝试将字符串转换为一个JavaScript值(包括布尔值(booleans),数字(numbers),对象(objects),数组(arrays)和空(null))。如果这样做不会改变值的表示,那么该值将转换为一个数字(number)。例如,“1E02”和“100.000”是等同于数字(数字值100),但将转换它们会改变他们的表示,所以他们被保留为字符串。字符串值“100”被转换为数字100。

如果数据(data)属性是一个对象(以“{”开始)或数组(以'['开始),可以用jQuery.parseJSON 将其解析成字符串;它必须遵循有效的JSON的语法,包括带双引号的属性名称。如果该值不能解析为一个JavaScript值,它将被保留为字符串。

如果不想将取出的属性值直接当作字符串的话,请使用attr()方法。

data-属性是在第一次使用这个数据属性后不再存取或改变(所有的数据值都在jQuery内部存储)。

调用 .data() 时如果不带参数,将会以 JavaScript 对象的形式获取所有数据。这个对象可以安全的存放在变量中,因为一旦这个新对象被提取出来,之后对元素进行的 .data(obj)操作,将不会再影响这个对象。另外,直接操作这个对象会比每次调用 .data() 来设置或获取值要快一些:

1 2 3 4 5 var mydata = $("#mydiv").data();if ( mydata.count < 9 ) {mydata.count = 43;mydata.status = "embiggened";}

相关推荐: