2

我在尝试选择除最后一个 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 个级别,而不是最后一个)。

任何指针将不胜感激。

谢谢

4

3 回答 3

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/

于 2013-06-03T11:13:30.617 回答
0

您只想选择直系后代的最简单方法:

http://jsfiddle.net/PQVPu/

var menu = $('#foo');
        menu.find( "nav ul:not(:last) > li > a" ).each(function() {
           $(this).css('color','red');
        });
于 2013-06-03T11:17:49.543 回答
0
menu.find("ul:not(:last) > li > a")

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

于 2013-06-03T11:34:45.463 回答