2012-06-12 6 views
42

返し:jQueryのデータ()undefinedを返し、ATTR()私は次のコードを有する整数

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

最初の通知を第二警告が整数、3を返し、一方、undefinedを返します。

-- SEE DEMO --

私はjQueryのバージョン1.7.2(dataはバージョン1.4、私は信じていながら添加した)

なぜこれがあるを使用していますか?適切な値が返されない場合は、data()を使用する必要がありますか?

答えて

91

OK。私はjQuery docsを解釈して問題を発見しました。

あなたが書いた:

$embellishment.data("embellishmentId"); 

化合物の属性としてのjQueryによって処理されます:

だから、
<div data-embellishment-id="3"></div> 

、あなたがデータキーに下部ケースを使用することができ、問題を解決するために、それ以外の場合だけアドレス異なる属性。 - ; `内部関数で` dataAttr` .toLowerCase() `VAR名= "データ - " + key.replace( "$ 1" rmultiDash、):

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

// JavaScript 
$embellishment.data("embellishmentid"); 
+5

ここでそれをしないソースコードがあります。 'rmultidash'は' rmultiDash = /([AZ])/ g; ' – Esailija

+0

http://www.whatwg.org/specs/web-apps/current-work/multipage/elements.html#embedding-custom-nonです。データとの可視データ - * - 属性 – Alex

+0

みんな、jQueryはこれを長い間行ってきました。 CSSの属性を見てみましょう。 CSSスタイルを表示する場合は、引用符で囲まれていない属性にcamelCaseを使用します。 css({'padding-top': '40px'}); '$ {'elem'};} { 。 – TerranRich

関連する問題