Javascript JS/jQuery:获取元素的深度?
在纯JavaScript或jQuery中获取元素深度的最简单方法是什么?我所说的“深度”是指它嵌套了多少个元素,或者它有多少个祖先。Javascript JS/jQuery:获取元素的深度?,javascript,jquery,Javascript,Jquery,在纯JavaScript或jQuery中获取元素深度的最简单方法是什么?我所说的“深度”是指它嵌套了多少个元素,或者它有多少个祖先。 $('#my-element').parents().length 试着这样做: <html> <head> <title>MooExample</title> <script type="text/javascript" src="jquery.js"><
$('#my-element').parents().length
试着这样做:
<html>
<head>
<title>MooExample</title>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$("li").click(function() {
alert($(this).parents().length);
});
});
</script>
</head>
<body>
<ul>
<li>moo</li>
<li>foo</li>
<li>fasoo</li>
<li>moasf</li>
<li>moosadg</li>
<li>moo1</li>
<li>moo412</li>
<li>moo613a</li>
</ul>
</body>
</html>
木瓜
$(文档).ready(函数(){
$(“li”)。单击(函数(){
警报($(this.parents().length);
});
});
- 呜呜
- 福
- 时尚
- 摩阿斯夫
- 穆萨达格
- 摩尔
- moo412
- moo613a
假设您不想在要计数的父项中包含body和html标记,请使用:
$("#element").parents("*").not("body,html").size()
这里的在线演示:我的建议是重新思考解决问题的方法-我认为查找节点之间的代数可能不是最好的方法,它听起来像是一种解决方案,将来可能会因代码更改而很容易崩溃 但是,如果您坚持,解决方案(由Cletus提供,使用本机javascript)在本页上看起来相当不错:
一个附加说明。如果要获取相对于特定上下文的深度,可以执行以下操作:
var depth = $("#my-element","#ContextContainerID").parents("ul").length;
上面,我正在搜索集装箱内有多少UL#ContextContainerID
功能元素深度(el){
变量深度=0
while(null!==el.parentElement){
el=el.parentElement
深度++
}
返回深度
}
console.log(elementDepth(document.getElementById('test'))
你好
polarblau的解决方案何时会不正确?每个元素只能有一个父元素,所以从逻辑上讲,如果它计算祖先的数量,那么它应该总是正确的。我忘了为什么我会问这个问题。。。可能是一种不好的方法。事实上,现在我想起来了,你是对的,纠正了我的评论。size()
和length
之间有区别吗?@Sachin Sharma建议$(“#我的元素”)。parentsUntil(“#ContextContainerID”,“ul”)。length