I feel this justifies the new answer since jQuery Free
document.getElementsByAttribute = function(attribute, value, tagName, parentElement) { var children = ($(parentElement) || document.body).getElementsByTagName((tagName || '*')); return $A(children).inject([], function(elements, child) { var attributeValue = child.getAttribute(attribute); if(attributeValue != null) { if(!value || attributeValue == value) { elements.push(child); } } return elements; }); }
a source
I was told that I sent the wrong script .. hehe read it here
// document.getElementsByAttribute([string attributeName],[string attributeValue],[boolean isCommaHyphenOrSpaceSeparatedList:false]) document.getElementsByAttribute=function(attrN,attrV,multi){ attrV=attrV.replace(/\|/g,'\\|').replace(/\[/g,'\\[').replace(/\(/g,'\\(').replace(/\+/g,'\\+').replace(/\./g,'\\.').replace(/\*/g,'\\*').replace(/\?/g,'\\?').replace(/\//g,'\\/'); var multi=typeof multi!='undefined'? multi: false, cIterate=document.getElementsByTagName('*'), aResponse=[], attr, re=new RegExp(multi?'\\b'+attrV+'\\b':'^'+attrV+'$'), i=0, elm; while((elm=cIterate.item(i++))){ attr=elm.getAttributeNode(attrN); if(attr && attr.specified && re.test(attr.value) ) aResponse.push(elm); } return aResponse; }
source share