jQuery每个循环从除最后一级之外的所有级别获取所选信息

时间:2013-06-03 11:08:22

标签: jquery

我遇到一个问题,jQuery试图选择除了最后一个ul内的每个主题项

示例HTML(简化版本)

<div id="foo">
<nav>
    <ul>
        <li>
            <a href="#" class="active"><span>xxxxx</span></a>
            <ul class="level2">
                <li>
                    <a href="#"><span>xxxxx</span></a>
                    <ul class="level3">
                        <li><a href="#"><span>xxxxx</span></a></li>
                        <li><a href="#"><span>xxxxx</span></a></li>
                        <li><a href="#"><span>xxxxx</span></a></li>
                        <li><a href="#"><span>xxxxx</span></a></li>
                    </ul>
                </li>
            </ul>
        </li>   
    </ul>
</nav>
</div>

我尝试过的一些jQuery示例(但失败并返回所有锚点)

var menu = $('#foo');
        menu.find( "nav ul:not(:last) a" ).each(function() {
            console.log($(this).text() );
        });

以上内容返回示例中的所有6个锚点。

我只想要2个锚点(前2个级别,而不是最后一个级别)。

任何指针都会非常感激。

由于

3 个答案:

答案 0 :(得分:1)

试试这个 -

menu.find( "nav ul a" ).filter(function(){
  return $(this).closest('ul').find('ul').length > 0;
}).each(function() {
            console.log($(this).text() );
});

演示--> http://jsfiddle.net/a5BeV/

答案 1 :(得分:0)

最简单的方法是,您只想选择直接后代:

http://jsfiddle.net/PQVPu/

var menu = $('#foo');
        menu.find( "nav ul:not(:last) > li > a" ).each(function() {
           $(this).css('color','red');
        });

答案 2 :(得分:0)

menu.find("ul:not(:last) > li > a")

可能是您正在寻找的选择器。