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

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

这行看起来像这样:

 

这工作:

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

这不起作用:

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

它有错误吗?

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

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

HTML 5数据 – 属性

从jQuery 1.4.3开始, HTML 5数据属性将自动引入jQuery的数据对象。 使用嵌入破折号处理属性在jQuery 1.6中进行了更改,以符合W3C HTML5规范 。

例如,给定以下HTML:

 

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

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

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

从上面的HTML5规范 :

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

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