3

3つのネストされたs内に含まれる一連のメニュー項目をループしたいのです<ul>が、ネストされたsの2番目のレイヤーから.HTML()のみを取得します<li>。例:

<ul>
<li><a href="#">Ignore</a></li>
<li><a href="#">Ignore</a></li>
<li><a href="#">Ignore</a>
   <ul>
   <li><a href="#">Retrive me</a></li>
   <li><a href="#">Retrive me</a></li>
   <li><a href="#">Retrive me</a>
       <ul>
       <li><a href="#">Ignore</a></li>
       <li><a href="#">Ignore</a></li>
       <li><a href="#">Ignore</a></li>
       </ul>
   </li>
   </ul>
</li>
</ul>

通常、私は.not()を使用します。例:

$.each($("#menu ul li ul li a").not("#menu ul li ul li ul li a"), function() {
  var linktext = $(this).html();
  console.log(linktext);
});

ただし、これでも2番目と3番目のレベルのタグからすべての.html()が返されます。

誰かがこれを修正する方法を知っていますか?

4

1 に答える 1

3

子セレクターを使用できます[ドキュメント]

$("#menu > ul > li > ul > li > a").each(...);

または、祖先の数を数えますが、li'sおそらくパフォーマンスは低下します。

$('#menu ul a').filter(function() {
    return $(this).parentsUntil('#menu', 'li').length === 2;
}).each(...);
于 2013-02-15T02:07:48.217 に答える