jQuery data()返回undefined,attr()返回整数

Cur*_*urt 51 javascript jquery jquery-attributes

我有以下代码:

alert($embellishment.data("embellishmentId"));
alert($embellishment.attr("data-embellishmentId"));
Run Code Online (Sandbox Code Playgroud)

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

- 看见演示 -

我正在使用jQuery版本1.7.2(data我相信版本1.4已添加)

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

Vis*_*ioN 107

好.我通过解释jQuery文档找到了问题.

当你写:

$embellishment.data("embellishmentId");
Run Code Online (Sandbox Code Playgroud)

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

<div data-embellishment-id="3"></div>
Run Code Online (Sandbox Code Playgroud)

因此,要解决此问题,您可以在数据键中使用小写,否则它只是处理不同的属性.

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

// JavaScript
$embellishment.data("embellishmentid");
Run Code Online (Sandbox Code Playgroud)

  • 这是执行它的源代码:`var name ="data-"+ key.replace(rmultiDash," - $ 1").toLowerCase();`在内部函数`dataAttr`中.`rmultidash`是`rmultiDash = /([AZ])/ g;` (5认同)