irrational
irrational

Reputation: 799

How do I find an element that does not have an id, name, class, attribute, etc.?

I want to find (probably using jquery) an element that is empty/naked/etc. For example I want to find all the span elements that do not have an id, name, class, or any other attribute whatsoever.

<html>
<head></head>
<body>
    <span> found </span>

    <span id="foo"> not found </span>

    <span name="foo"> not found </span>

    <span class="foo"> not found </span>

    <span style="width:foo"> not found </span>

    <span> found </span>

    <span foo="bar"> not found </span>
</body>
</html>

Upvotes: 4

Views: 1255

Answers (5)

PlantTheIdea
PlantTheIdea

Reputation: 16359

Thanks @adeneo for the information, this.attributes always returns a value. As such, I'll clean up the answer.

How to select elements that are "naked" (that do not have any attributes) using jQuery:

$('span').filter(function(){
    return (this.attributes.length === 0);
}).text();

The .text() method is just a placeholder, anything can be applied at that point.

What the hell, here's a simple jsFiddle.

Upvotes: 5

kalai
kalai

Reputation: 29

Try this.

var elements=document.getElementsByTagName("span")
for(var v=0;v<elements.length;v++){
    if(elements[v].attributes.length==0){
    //your element without any attribute
    }
}

Upvotes: 1

jfriend00
jfriend00

Reputation: 707238

If an element doesn't have any identifying class, id, name or attribute, then the only way to find it is by its location in the hierarchy and its position in that hierarchy and, in some cases, by the attributes that it does NOT have or perhaps by the content that it has.

There is no generic answer to this question as it really depends upon your exact circumstances and exact HTML so folks can only help you more specifically ONLY if you provide the exact HTML and tell us which element you're looking for in that HTML.

Upvotes: 2

Scott
Scott

Reputation: 1688

You just need to loop through the elements and find the elements with attributes.length == 0 http://jsfiddle.net/HjBGP/

var els = document.getElementsByTagName('span');

for(var i=0;i<els.length;i++){
    if(els[i].attributes.length == 0) {
       console.log(els[i].innerHTML);
    }
}

Upvotes: 0

Paul Roub
Paul Roub

Reputation: 36438

Look for an empty attributes list:

var spans = $('span').filter(
  function() {
    return (this.attributes.length == 0);
});

Example: http://codepen.io/paulroub/pen/JjAia/

Upvotes: 4

Related Questions