如何获得列表的深度级别?

时间:2014-08-11 21:17:18

标签: javascript jquery

如何获得列表的深度级别?

  • 列表可以是不对称的
  • x" li"或" ul"嵌套

x或li的数量

例如: 级别 2

的列表
<ul>
    <li>1
    </li>
    <li>2
        <ul>
            <li>2.1</li>
            <li>2.2</li>
            <li>2.3</li>
        </ul>
    </li>
    <li>3
    </li>
</ul>

级别 3

的列表
<ul>
    <li>1
    </li>
    <li>2
        <ul>
            <li>2.1
                <ul>
                    <li>2.1.1</li>
                 </ul>
            </li>
            <li>2.2</li>
            <li>2.3</li>
        </ul>
    </li>
    <li>3
    </li>
</ul>

1 个答案:

答案 0 :(得分:2)

我提出的一种方式:

function getDepth(list){
     for(var depth=0; list.querySelector(Array(depth++ +3).join(list.tagName+" ")) ;  );
    return depth;
}

// example usage:
getDepth(  document.getElementsByTagName"ul")[0]  );

可能有更好的解决方案,但这似乎有效,并且避免了最深入的子搜索的重复迭代,所以它应该也要快得多。

请小心翼翼地踢轮胎:http://jsfiddle.net/nghea3ot/4/

我知道这个问题在这里没有得到很多的爱,但这是一个很好的问题,现有的答案很差......