यहाँ कई तरीकों का अवलोकन किया जा सकता है, जो मेरे स्वयं के संदर्भ के साथ-साथ आपके लिए भी हैं :) फ़ंक्शन ने विशेषता नामों और उनके मूल्यों का एक हैश लौटाया है।
वेनिला जेएस :
function getAttributes ( node ) {
var i,
attributeNodes = node.attributes,
length = attributeNodes.length,
attrs = {};
for ( i = 0; i < length; i++ ) attrs[attributeNodes[i].name] = attributeNodes[i].value;
return attrs;
}
Array.reduce के साथ वेनिला जेएस
ES 5.1 (2011) का समर्थन करने वाले ब्राउज़रों के लिए काम करता है। IE8 + की आवश्यकता है, IE8 में काम नहीं करता है।
function getAttributes ( node ) {
var attributeNodeArray = Array.prototype.slice.call( node.attributes );
return attributeNodeArray.reduce( function ( attrs, attribute ) {
attrs[attribute.name] = attribute.value;
return attrs;
}, {} );
}
jQuery
यह फ़ंक्शन एक jQuery ऑब्जेक्ट की अपेक्षा करता है, न कि DOM तत्व की।
function getAttributes ( $node ) {
var attrs = {};
$.each( $node[0].attributes, function ( index, attribute ) {
attrs[attribute.name] = attribute.value;
} );
return attrs;
}
अंडरस्कोर
दर्ज कराने का भी काम करता है।
function getAttributes ( node ) {
return _.reduce( node.attributes, function ( attrs, attribute ) {
attrs[attribute.name] = attribute.value;
return attrs;
}, {} );
}
lodash
अंडरस्कोर संस्करण की तुलना में और भी अधिक संक्षिप्त है, लेकिन केवल लॉकर के लिए काम करता है, अंडरस्कोर के लिए नहीं। IE8 + की आवश्यकता है, IE8 में छोटी गाड़ी है। उस एक के लिए Kudos @AlJey को ।
function getAttributes ( node ) {
return _.transform( node.attributes, function ( attrs, attribute ) {
attrs[attribute.name] = attribute.value;
}, {} );
}
परीक्षण पृष्ठ
जेएस बिन में, इन सभी कार्यों को कवर करने वाला एक लाइव टेस्ट पेज है। परीक्षण में बूलियन विशेषताओं ( hidden
) और प्रगणित विशेषताओं ( contenteditable=""
) शामिल हैं।
$().attr()