Reputation: 285
I have a ul
element:
<ul id="listA">
<li class="myclass">1</li>
<li class="myclass">2</li>
<li class="myclass">3</li>
<li class="myclass">4</li>
<li class="myclass">5</li>
<li>
<ul id="listB">
<li class="myclass">B1</li>
<li class="myclass">B2</li>
<li class="myclass">B3</li>
<li class="myclass">B4</li>
</ul>
</li>
</ul>
I want to get all elements by class name myclass
which are not in ul
with ID listB
.
My tries with $('.myclass:not ul #listB')
wont work.
Upvotes: 1
Views: 93
Reputation: 28434
You can use not
as follows:
const res = $('*:not(ul#listB) > .myclass');
console.log(res);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul id="listA">
<li class="myclass">1</li>
<li class="myclass">2</li>
<li class="myclass">3</li>
<li class="myclass">4</li>
<li class="myclass">5</li>
<li>
<ul id="listB">
<li class="myclass">B1</li>
<li class="myclass">B2</li>
<li class="myclass">B3</li>
<li class="myclass">B4</li>
</ul>
</li>
</ul>
Upvotes: 1
Reputation: 171700
Use $('.myclass').not('#listB .myclass')
$('.myclass').not('#listB .myclass').css('color', 'red')
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul id="listA">
<li class="myclass">1</li>
<li class="myclass">2</li>
<li class="myclass">3</li>
<li class="myclass">4</li>
<li class="myclass">5</li>
<li>
<ul id="listB">
<li class="myclass">B1</li>
<li class="myclass">B2</li>
<li class="myclass">B3</li>
<li class="myclass">B4</li>
</ul>
</li>
</ul>
Upvotes: 1
Reputation: 11
You can give more than 1 class names. So give listA class to li which are in listA
<ul id="listA">
<li class="myclass inListA">1</li>
<li class="myclass inListA">2</li>
<li class="myclass inListA">3</li>
<li class="myclass inListA">4</li>
<li class="myclass inListA">5</li>
<li>
<ul id="listB">
<li class="myclass">B1</li>
<li class="myclass">B2</li>
<li class="myclass">B3</li>
<li class="myclass">B4</li>
</ul>
</li>
</ul>
And now use it like that $('.inListA')
. It will help I think!
Upvotes: 0