Superdrac
Superdrac

Reputation: 1208

Complex DOM selection jQuery

I have a structure like this in my DOM:

<ul>
    <li>
        <div class="truc"></div>
        <div class="machin"></div>
        <div class="chose"></div>
    </li>
    <li>
        <div class="truc"></div>
        <div class="machin"></div>
        <div class="chose"></div>
    </li>
    <li>
        <div class="truc"></div>
        <div class="machin"></div>
        <div class="chose"></div>
    </li>
    <li>
        <div class="truc"></div>
        <div class="machin"></div>
        <div class="chose"></div>
    </li>
    <li>
        <div class="truc"></div>
        <div class="machin"></div>
        <div class="chose"></div>
    </li>
    <li>
        <div class="truc"></div>
        <div class="machin"></div>
        <div class="chose"></div>
    </li>
</ul>

I want to select all the ul child (it include the elements, except the class called "chose". I tried something like:

$('ul').children().not('.chose')

but i didn't success...

Upvotes: 0

Views: 79

Answers (2)

Shaunak D
Shaunak D

Reputation: 20626

Try using $('ul li') . <li> are the immediate children of <ul> not<div>

$('ul li').children().not('.chose')

If you want to remove these <div>s

$('ul li').children('.chose').remove();

Upvotes: 1

James Donnelly
James Donnelly

Reputation: 128791

The children() of the ul element are li elements, not the div elements you're after. You need to use jQuery's find() method instead:

$('ul').find('div').not('.chose')

JSFiddle demo.


But i want to select the li elements to... i want that the complete return be: <li> <div class='truc'></div> <div class='machin'></div> </li>

In that case you can use this:

$('ul').find('li, div').not('div.chose')

JSFiddle demo.

Upvotes: 1

Related Questions