为什么jQuery会自动解析我的data- *属性?

时间:2011-09-07 20:52:56

标签: jquery html5

我刚注意到,如果我尝试使用data-*读取html5 .data属性,它会自动解析,而使用.attr读取值则不会。

data-id="00123456"

为什么这是默认行为?我有某些对象,其字段在字符串中是数字值,例如“00123456”而非123456。

我是否错过了jQuery changelog备忘录或者什么?

1 个答案:

答案 0 :(得分:7)

来自documentation

的引用
  

从jQuery 1.4.3开始,HTML 5数据属性将自动生成   拉入jQuery的数据对象。用属性处理属性   在jQuery 1.6中更改了嵌入式破折号以符合W3C HTML5   说明书

     

例如,给定以下HTML:

     

<div data-role="page" data-last-value="43" data-hidden="true" data-options='{"name":"John"}'></div>

     

以下所有jQuery代码都可以使用。

     

$("div").data("role") === "page";

     

$("div").data("lastValue") === 43;

     

$("div").data("hidden") === true;

     

$("div").data("options").name === "John";

     

每次尝试都将字符串转换为JavaScript值   (否则,这包括布尔值,数字,对象,数组和null)   它留作一个字符串。要将值的属性检索为字符串   如果没有尝试转换它,请使用attr()方法。

因此,从jQuery 1.6开始,.data方法解析了值。