Sıfır veya daha fazla data-*
özniteliğe sahip rastgele bir HTML öğesi verildiğinde , veriler için anahtar / değer çiftlerinin bir listesi nasıl alınabilir.
Örneğin, bu verilen:
<div id='prod' data-id='10' data-cat='toy' data-cid='42'>blah</div>
Programlı olarak bu almak mümkün olmak istiyorum:
{ "id":10, "cat":"toy", "cid":42 }
$.data()
Anahtarlar önceden biliniyorsa , jQuery (v1.4.3) kullanarak , tek tek veri bitlerine erişmek basittir, ancak rastgele veri kümeleriyle bunu nasıl yapabileceğiniz açık değildir.
Ben varsa 'basit' bir jQuery çözüm arıyorum, ama aksi takdirde daha düşük düzeyli bir yaklaşım sakıncası olmaz. Ayrıştırmaya çalışırken bir gitmek vardı $('#prod').attributes
ama javascript-fu eksikliği beni hayal kırıklığına uğratmak.
Güncelleme
customdata ihtiyacım olanı yapar. Bununla birlikte, işlevselliğinin sadece bir kısmı için bir jQuery eklentisi dahil olmak aşırıya kaçmış gibi görünüyordu.
Kaynağa göz atmak, kendi kodumu düzeltmeme yardımcı oldu (ve javascript-fu'yu geliştirdi).
İşte geldiğim çözüm:
function getDataAttributes(node) {
var d = {},
re_dataAttr = /^data\-(.+)$/;
$.each(node.get(0).attributes, function(index, attr) {
if (re_dataAttr.test(attr.nodeName)) {
var key = attr.nodeName.match(re_dataAttr)[1];
d[key] = attr.nodeValue;
}
});
return d;
}
güncelleme 2
Kabul edilen cevapta gösterildiği gibi, çözüm jQuery ile önemsizdir (> = 1.4.4). $('#prod').data()
gerekli veri kararını döndürür.