Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JS/jQuery:获取元素的深度?_Javascript_Jquery - Fatal编程技术网

Javascript JS/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"><

在纯JavaScript或jQuery中获取元素深度的最简单方法是什么?我所说的“深度”是指它嵌套了多少个元素,或者它有多少个祖先。

$('#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