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

时间:2011-06-28 16:29:28

标签: 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">

这有效:

$("#docClassAttributeFields tbody tr:first").attr("data-DocClassAttributeFieldId");

这不起作用:

$("#docClassAttributeFields tbody tr:first").data("DocClassAttributeFieldId");

它有错误吗?

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

1 个答案:

答案 0 :(得分:16)

来自docs (我怀疑1.6中提到的更改是罪魁祸首 - 您是否尝试删除案例,请查看lastValue示例?)

  

HTML 5数据 - 属性

     

从jQuery 1.4.3开始HTML 5 data- attributes   将被自动拉入   jQuery的数据对象。治疗   嵌入破折号的属性是   在jQuery 1.6中更改为符合   W3C HTML5 specification

     

例如,给定以下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()   方法。当data属性是   object(以'{')或数组开头   (以'[')开头   jQuery.parseJSON用于解析   串;它必须遵循有效的JSON   语法包括quoted属性   名。拉取数据属性   在第一次data属性   访问,然后不再   访问或变异(所有数据值   然后在内部存储在jQuery中。

来自上述HTML5 specification

  

自定义数据属性是一个   没有命名空间的属性,其名称   以字符串“data-”开头,at at   连字符后至少有一个字符,   是XML兼容的,并且不包含   字符串在U + 0041到   U + 005A(拉丁文大写字母A至   拉丁文大写字母Z)。

     

HTML元素的所有属性   HTML文档得到ASCII-lowercased   自动,所以限制   ASCII大写字母不影响   这样的文件。