简体   繁体   English

如何使用jquery在每个li中找到最后一个ul?

[英]How to find the last ul in every li using jquery?

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?你知道我怎样才能找到 .cat-item-444 和 cat-item-314 的最后一个 ul 然后在一个 jquery 代码中选择7 kvm (1199 kr/mån)0,5 kvm (349 kr/mån) The selected tag should have .css('border', '1px solid red');选定的标签应该有 .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:为此,您可以使用:last-child选择器来查找每个子级别ul的最后一个li ,如下所示:

 $('.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.如果你想要得到的li在第二级,并有多个较低水平,那么你就需要添加额外的子选择器,类似.cat-item > ul > li > ul > li:last-child ,但鉴于提供的 HTML,上述内容将起作用。

Also note the use of addClass() over css() .还要注意在css()使用addClass() css() This is preferred as you don't really want to put any styling rules directly in JS;这是首选,因为您真的不想将任何样式规则直接放在 JS 中; they belong in CSS.它们属于 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() :使用.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>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM