javascript - 获取元素的 DOM 层次结构级别(计算后代级别)

标签 javascript jquery html

是否有一种有效的方法来计算特定元素的最深后代级别?

例子:

<div id="wrapper">
  <ul>
    <li class="first">first</li>
    <li class="active">second</li>
    <li class="last"><a>third</a></li>
  </ul>
</div>

#wrapper 应该返回 4 的后代级别,因为最深的链是这样的:#wrapper > ul > li > a

li.first 应该返回 1 因为它没有 child ,li.last 应该返回 2 因为li.last > a

我可以做一个 $('#wrapper').find(*) 并遍历所有结果,这对于有很多后代的元素来说应该很慢,特别是对于 body 元素。

这是实验的开始:http://jsbin.com/ixeWaja/1/edit

有什么有效解决这个问题的想法吗?

最佳答案

如果您最终需要深度,效率可能不是您最关心的问题,但这是一种非常简洁有效的方法。

var el = $("#wrapper");
var i = 0;

while ((el = el.children()).length) {
    i++;
}

http://jsbin.com/ixeWaja/4/

关于javascript - 获取元素的 DOM 层次结构级别(计算后代级别),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18551418/

相关文章:

python - django 使用原始 mysql 进行搜索

html - 如果 DIV 内容太大,则保持 DIV 并排并使页面可水平滚动

javascript - jQuery 自动向上和向下滚动一个 div

java - 使用 javascript 动态添加重复(唯一 ID)表单 Div 元素

javascript - 用值初始化 Guard

jQuery 数组越界错误

jquery - 使用 jQuery 传递 POST 数据时打开 URL

javascript - indexOf 返回-1,为什么?

javascript - 计算表列中选中的复选框数量

html - 版权声明的语义 HTML 标记