views:

47

answers:

1

hi. how can select all nodes with class "myClass" whose parent nodes don't have class "myClass".

for example, i have following HTML:

<div class="myContainer">
    <div class="myClass" id="d1"> 
        <div class="myClass" id="d2"></div>
        <div class="myClass" id="d4"></div>
    </div>
    <div class="myClass" id="d3"></div>
</div>

and i want to get a list of elements with ids "d1" and "d3"

actually, i'm trying to write a code that converts HTML from that example to a list with tabulations, such as:

d1
  d2
  d4
d3

(there can be more descedant nodes)

+2  A: 

I have come up with a number of possible solutions. Maybe:

$(":not(.myClass) > .myClass")

Or if you want to look beyond the direct parent:

$(":not(.myClass) .myClass")

This might work also:

$(".myClass:has(:not(.myClass))")

A better solution for your exact example:

$(".myContainer > .myClass")
kaba
thanks. the first solution is better because i'm not sure that there is always a parent node with class "myContainer"
kipelovets