web-dev-qa-db-ja.com

jQuery data()は未定義を返し、attr()は整数を返します

私は次のコードを持っています:

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

最初のアラートはundefinedを返し、2番目のアラートは整数_3_を返します。

-デモを見る-

JQueryバージョン1.7.2を使用しています(dataはバージョン1.4で追加されたと思います)

どうしてこれなの?正しい値を返さない場合、data()を使用する必要がありますか?

49
Curt

OK。 jQuery docs を解釈することで問題を見つけました。

あなたが書くとき:

$embellishment.data("embellishmentId");

jQueryによって複合属性として処理されます。

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

そのため、問題を解決するには、データキーに小文字を使用します。そうしないと、異なる属性に対応するだけになります。

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

// JavaScript
$embellishment.data("embellishmentid");
102
VisioN