2

最後の ul 内のものを除くすべてのアンカー項目を選択しようとする jQuery に問題があります。

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
menu.find("ul:not(:last) > li > a")

探しているセレクターかもしれません。

于 2013-06-03T11:34:45.463 に答える
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 に答える