2012-06-12 15 views
42

döner Aşağıdaki kodu vardır: İkinci uyarı bir tamsayı, 3 verir;jQuery verileri() tanımlanmamış, çekici bir döner() tamsayı

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

ilk uyarı, undefined döndürür.

-- SEE DEMO --

jQuery sürüm 1.7.2 kullanıyorum

Bunun sebebi nedir (data sürümü 1.4 inanıyorum ile eklenmiştir)? Doğru değerleri geri göndermiyorsa data() kullanmalı mıyım?

cevap

91

Tamam. Sorunu jQuery docs yorumlayarak buldum.

Eğer yazarken:

$embellishment.data("embellishmentId"); 

o bileşik niteliği olarak jQuery tarafından ele alınır: Yani

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

, veri anahtarında küçük harf kullanabilirsiniz sorunu çözmek için aksi takdirde sadece adresler farklı özellik. -; `iç fonksiyonunda` dataAttr` .toLowerCase() `var name = "veriye" + key.replace ("$ 1" rmultiDash,):

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

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

İşte öyle kaynak kodudur. 'Rmultidash' rmultiDash =/([AZ])/g; ' – Esailija

+0

http://www.whatwg.org/specs/web-apps/current-work/multipage/elements.html#embedding-custom-non -Veri veri ile veri-veri - * - öznitelikleri – Alex

+0

Guys, jQuery bunu uzun zamandır yapmıştır. CSS özelliklerine bir göz atın. Bir CSS stili görmek istiyorsanız, alıntılanmamış özellikler için camelCase'i kullanır. Örneğin: $ ('# elem'). Css ({paddingTop: '40px'}); 've' $ ('# elem'). Css ({'padding-top': '40px'}); ' . – TerranRich