jQuery data() 返回未定义,attr() 返回整数

Posted

技术标签:

【中文标题】jQuery data() 返回未定义,attr() 返回整数【英文标题】:jQuery data() returns undefined, attr() returns integer 【发布时间】:2012-06-15 02:50:26 【问题描述】:

我有以下代码:

alert($embellishment.data("embellishmentId"));
alert($embellishment.attr("data-embellishmentId"));

第一个警报返回undefined,而第二个警报返回一个整数3

-- SEE DEMO --

我正在使用 jQuery 1.7.2 版(我相信在 1.4 版中添加了data

这是为什么?如果 data() 没有返回正确的值,我应该使用它吗?

【问题讨论】:

【参考方案1】:

好的。我通过解释jQuery docs发现了问题。

当你写作时:

$embellishment.data("embellishmentId");

它被 jQuery 作为复合属性处理:

<div data-embellishment-id="3"></div>

所以,为了解决这个问题,你可以在数据键中使用小写,否则它只是解决不同的属性。

<!-- html -->
<div data-embellishmentid="3"></div>

// javascript
$embellishment.data("embellishmentid");

【讨论】:

这是执行此操作的源代码:var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); 内部函数 dataAttr。其中rmultidashrmultiDash = /([A-Z])/g; whatwg.org/specs/web-apps/current-work/multipage/…*-attributes 伙计们,jQuery 已经这样做了很长时间。看一下 CSS 属性。如果您想查看 CSS 样式,它使用 camelCase 表示未引用的属性。例如:$('#elem').css(paddingTop: '40px');$('#elem').css('padding-top': '40px'); @Vision,如果我们使用多个数据,它是如何工作的?例如 、、 @samsam 不确定您要求什么,但假设您想要一个值数组。使用这种方法:$embellishment.map(function() return $(this).data('embellishmentid'); ).get();.

以上是关于jQuery data() 返回未定义,attr() 返回整数的主要内容,如果未能解决你的问题,请参考以下文章

单击时jquery未返回正确的值

jQuery 验证: $.data($('form')[0], 'validator').settings 返回未定义

jquery attr和data给元素添加自定义属性

Internet Explorer 7 从 jQuery 类选择器返回“未定义”

jquery中attr和prop的区别

jquery data属性 attr vs data