如何获得无序列表中最深的 li 标签的深度?

例如,这个无序列表最深 li 的深度等于 3 :

<ul>
  <li></li>
  <li>
    <ul>
      <li></li>
    </ul>
  </li>
  <li>
    <ul>
      <li>
        <ul>
          <li></li> <!-- I am the deepest -->
        </ul>
      </li>
    </ul>
  </li>
</ul>

最佳答案

假设您没有选择器(id、class 等),您需要在没有 ul 的元素中使用一个简单的循环。

// create maxDepth and cDepth variables
var maxDepth = -1
  , cDepth   = -1
  ;

// each `li` that hasn't `ul` children
$("li:not(:has(ul))").each(function() {

    // get the current `li` depth
    cDepth = $(this).parents("ul").length;

    // it's greater than maxDepth found yet
    if (cDepth > maxDepth) {

       // this will become the max one
       maxDepth = cDepth;
    }
});

// alert
alert(maxDepth);

JSFIDDLE

如果你有最深的 .myClassli 选择器:
<ul>
  <li></li>
  <li>
    <ul>
      <li></li>
    </ul>
  </li>
  <li>
    <ul>
      <li>
        <ul>
          <li class="myClass"></li>
        </ul>
      </li>
    </ul>
  </li>
</ul>

很简单:只计算它的 ul parent
var depth = $(".myClass").parents("ul").length;

关于jquery - 计算无序列表的深度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22248432/

10-11 20:09