शून्य या अधिक data-*
विशेषताओं के साथ एक मनमाने ढंग से HTML तत्व को देखते हुए , डेटा के लिए कुंजी-मूल्य जोड़े की एक सूची कैसे प्राप्त की जा सकती है।
जैसे यह दिया गया:
<div id='prod' data-id='10' data-cat='toy' data-cid='42'>blah</div>
मैं इसे प्रोग्रामेटिक रूप से पुनः प्राप्त करने में सक्षम होना चाहूंगा:
{ "id":10, "cat":"toy", "cid":42 }
JQuery (v1.4.3) का उपयोग करके, डेटा के व्यक्तिगत बिट्स का उपयोग $.data()
करना सरल है यदि कुंजियों को पहले से जाना जाता है, लेकिन यह स्पष्ट नहीं है कि कोई डेटा के मनमाने सेट के साथ ऐसा कैसे कर सकता है।
अगर कोई मौजूद है तो मैं 'सिंपल' jQuery के समाधान की तलाश कर रहा हूं, लेकिन निचले स्तर के दृष्टिकोण को बुरा नहीं मानूंगा। मैं पार्स करने की कोशिश कर रहा था, $('#prod').attributes
लेकिन मेरे जावास्क्रिप्ट-फू की कमी मुझे निराश कर रही है।
अपडेट करें
customdata मैं क्या जरूरत है। हालाँकि, एक jQuery प्लगइन सहित इसकी कार्यक्षमता के एक अंश के लिए एक ओवरकिल की तरह लग रहा था।
स्रोत पर नजर रखने से मुझे अपने स्वयं के कोड को ठीक करने में मदद मिली (और मेरे जावास्क्रिप्ट-फू में सुधार हुआ)।
यहाँ मैं के साथ आया समाधान है:
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;
}
अद्यतन २
जैसा कि स्वीकृत उत्तर में दिखाया गया है, समाधान jQuery (> = 1.4.4) के साथ तुच्छ है। $('#prod').data()
आवश्यक डेटा को वापस लौटाएगा।