3

我想遍历包含在 3 个嵌套<ul>s 中的一系列菜单项,但只从嵌套 s 的第二层检索 .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);
});

但这仍然从第二和第三级 a 标签返回所有 .html() 。

有人知道如何修改吗?

4

1 回答 1

3

您可以使用子选择器[docs]

$("#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 回答