I have a list
<ul class="mtree default">
<li class="cat-item cat-item-224 cat-parent mtree-node mtree-open">
<a href="#" style="cursor: pointer;">Lidingö</a>
<ul class="children mtree-level-1">
<li class="cat-item cat-item-444">
<a href="#" style="cursor: pointer;">Direktåtkomst Förrådslänga</a>
<ul class="children mtree-level-2">
<li class="cat-item cat-item-504">
<a>7 kvm (1199 kr/mån)</a>
</li>
</ul>
</li>
<li class="cat-item cat-item-314">
<a href="#" style="cursor: pointer;">Hissplan</a>
<ul class="children mtree-level-2">
<li class="cat-item cat-item-674">
<a href="#">0,5 kvm (349 kr/mån)</a>
</li>
</ul>
</li>
</ul>
</li>
</ul>
Do you know how can I find the last ul of .cat-item-444 and cat-item-314 then select 7 kvm (1199 kr/mån) and 0,5 kvm (349 kr/mån) in one jquery code? The selected tag should have .css('border', '1px solid red');
To achieve this you can use the :last-child
selector to find the last li
within each sub-level ul
, like this:
$('.cat-item > ul li ul li:last-child').addClass('foo');
.foo { border: 1px solid red; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <ul class="mtree default"> <li class="cat-item cat-item-224 cat-parent mtree-node mtree-open"> <a href="#" style="cursor: pointer;">Lidingö</a> <ul class="children mtree-level-1"> <li class="cat-item cat-item-444"> <a href="#" style="cursor: pointer;">Direktåtkomst Förrådslänga</a> <ul class="children mtree-level-2"> <li class="cat-item cat-item-504"> <a>7 kvm (1199 kr/mån)</a> </li> </ul> </li> <li class="cat-item cat-item-314"> <a href="#" style="cursor: pointer;">Hissplan</a> <ul class="children mtree-level-2"> <li class="cat-item cat-item-674"> <a href="#">0,5 kvm (349 kr/mån)</a> </li> </ul> </li> </ul> </li> </ul>
If you only want to get the li
in the second level, and there are multiple lower levels then you'd need to add additional child selectors, something like .cat-item > ul > li > ul > li:last-child
, but the above will work given the provided HTML.
Also note the use of addClass()
over css()
. This is preferred as you don't really want to put any styling rules directly in JS; they belong in CSS.
what about a dynamic version :)
$(".cat-item li:not(:has('ul')) a").addClass('foo');
.foo { border: 1px solid red; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <ul class="mtree default"> <li class="cat-item cat-item-224 cat-parent mtree-node mtree-open"> <a href="#" style="cursor: pointer;">Lidingö</a> <ul class="children mtree-level-1"> <li class="cat-item cat-item-444"> <a href="#" style="cursor: pointer;">Direktåtkomst Förrådslänga</a> <ul class="children mtree-level-2"> <li class="cat-item cat-item-504"> <a>7 kvm (1199 kr/mån)</a> </li> </ul> </li> <li class="cat-item cat-item-314"> <a href="#" style="cursor: pointer;">Hissplan</a> <ul class="children mtree-level-2"> <li class="cat-item cat-item-674"> <a href="#">0,5 kvm (349 kr/mån)</a> </li> </ul> </li> </ul> </li> </ul>
Try this :
$('.children li.cat-item').each(function() { console.log($(this).find('ul:last-child li a').text()); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <ul class="mtree default"> <li class="cat-item cat-item-224 cat-parent mtree-node mtree-open"> <a href="#" style="cursor: pointer;">Lidingö</a> <ul class="children mtree-level-1"> <li class="cat-item cat-item-444"> <a href="#" style="cursor: pointer;">Direktåtkomst Förrådslänga</a> <ul class="children mtree-level-2"> <li class="cat-item cat-item-504"> <a>7 kvm (1199 kr/mån)</a> </li> </ul> </li> <li class="cat-item cat-item-314"> <a href="#" style="cursor: pointer;">Hissplan</a> <ul class="children mtree-level-2"> <li class="cat-item cat-item-674"> <a href="#">0,5 kvm (349 kr/mån)</a> </li> </ul> </li> </ul> </li> </ul>
Use .last()
:
$('.cat-item-444 ul li').last().css('border','1px solid red'); $('.cat-item-314 ul li').last().css('border','1px solid red'); debugger
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <ul class="mtree default"> <li class="cat-item cat-item-224 cat-parent mtree-node mtree-open"> <a href="#" style="cursor: pointer;">Lidingö</a> <ul class="children mtree-level-1"> <li class="cat-item cat-item-444"> <a href="#" style="cursor: pointer;">Direktåtkomst Förrådslänga</a> <ul class="children mtree-level-2"> <li class="cat-item cat-item-504"> <a>7 kvm (1199 kr/mån)</a> </li> </ul> </li> <li class="cat-item cat-item-314"> <a href="#" style="cursor: pointer;">Hissplan</a> <ul class="children mtree-level-2"> <li class="cat-item cat-item-674"> <a href="#">0,5 kvm (349 kr/mån)</a> </li> </ul> </li> </ul> </li> </ul>
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.