jQuery .data()没有检索数据 - *

Hom*_*mer 10 jquery html5 internet-explorer-8

我正在测试IE8.我刚刚将jQuery从v1.5.2升级到v1.6.1,现在数据方法无效.

行看起来像这样:

<tr class="ui-widget-content alt" nodeIndex="2" data-DocAttributeFieldType="TextBox" data-DocClassAttributeFieldId="60777" jQuery16106588245076914028="66">
Run Code Online (Sandbox Code Playgroud)

这工作:

$("#docClassAttributeFields tbody tr:first").attr("data-DocClassAttributeFieldId");
Run Code Online (Sandbox Code Playgroud)

这不起作用:

$("#docClassAttributeFields tbody tr:first").data("DocClassAttributeFieldId");
Run Code Online (Sandbox Code Playgroud)

它有错误吗?

这是一个例子.在1.5.2和1.6中运行它以查看它们如何以不同的方式运行... http://jsfiddle.net/5hbKX/

Orb*_*ing 16

文档 (我怀疑1.6中提到的更改是责备 - 你试过删除案例,看看lastValue示例?):

HTML 5数据 - 属性

从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>
Run Code Online (Sandbox Code Playgroud)

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

$("div").data("role") === "page";
$("div").data("lastValue") === 43;
$("div").data("hidden") === true;
$("div").data("options").name === "John";
Run Code Online (Sandbox Code Playgroud)

每次尝试都将字符串转换为JavaScript值(这包括布尔值,数字,对象,数组和null),否则它将保留为字符串.要将值的属性检索为字符串而不尝试转换它,请使用attr()方法.当data属性是一个对象(以'{'开头)或数组(以'['开头)时,则使用jQuery.parseJSON来解析字符串; 它必须遵循有效的JSON语法,包括引用的属性名称.数据属性在第一次访问数据属性时被拉出,然后不再被访问或变异(然后所有数据值都在内部存储在jQuery中).

从上面的HTML5规范:

自定义数据属性是在没有命名空间的名字以字符串"数据- "开头的属性,具有连字符后的至少一个字符,是XML兼容,并且包含在范围内的任何字符U + 0041到U + 005A(拉丁文大写字母A到拉丁文大写字母Z).

HTML文档中HTML元素的所有属性都会自动进行ASCII小写,因此对ASCII大写字母的限制不会影响此类文档.

  • 如果不允许使用大写字母,请改用 - 连字符 - 连接 - 单词. (6认同)
  • 好吧,如果有一个连字符,这会增加混乱,大写字母会起作用.所以.data("id-D")有用,.data("idB")没有... http://jsfiddle.net/5hbKX/2/ (2认同)