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
。其中rmultidash
是rmultiDash = /([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 验证: $.data($('form')[0], 'validator').settings 返回未定义