I want a selector like $(".author") that will select an element if "author" is the value of any attribute, not just class.
E.g. selector.text() should give "Emily Ekins" for each of the following pages:
<a href="http://reason.com/people/emily-ekins" rel="author">Emily Ekins</a>
or
<bloop href="http://reason.com/people/emily-ekins" id="author">Emily Ekins</a>
or
<blah href="http://reason.com/people/emily-ekins" class="author">Emily Ekins</a>
or
<tag href="http://reason.com/people/emily-ekins" random="author">Emily Ekins</a>
Is there any way to do this?
jQuery [attribute|=value] Selector The [attribute|=value] selector selects each element with a specified attribute, with a value equal to a specified string (like "en") or starting with that string followed by a hyphen (like "en-us"). Tip: This selector is often used to handle language attributes.
Answer: Use the CSS Attribute Selector You can use the CSS attribute selectors to find an HTML element based on its data-attribute value using jQuery. The attribute selectors provide a very powerful way to select elements.
To retrieve a data-* attribute value as an unconverted string, use the attr() method. Since jQuery 1.6, dashes in data-* attribute names have been processed in alignment with the HTML dataset API. $( "div" ).
I would use @Web Developer's answer, but will add that if you're going to need to select them multiple times, then it's more efficient to save the selection as a var:
var $target = $("[id='author'],[class='author'],[name='author']");
$target.text();
Here's some documentation on attribute selectors:
http://api.jquery.com/category/selectors/
http://www.w3.org/TR/css3-selectors/#attribute-selectors
https://github.com/jquery/sizzle/wiki/Sizzle-Home (jQuery uses Sizzle)
var elements = document.getElementsByTagName("*");
for(var i=0;i<elements.length;i++){
var element = elements[i];
var attr = element.attributes;
for(var j=0;j<attr.length;j++){
if(attr[j].nodeValue == 'author'){
element.style.backgroundColor='red';
}
}
}
Example
Whew! That took some time. But this will check every single attribute of any given element, and if any attribute is author, it will change the background color to red.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With