2009-09-07 119 views
1

我很难找出一个快速的方法来完成一个(看似)简单的任务。说我有以下的HTML:用jquery查找两个元素之间的节点数量?

<ul> 
    <li>One</li> 
    <li>Two</li> 
    <li id='parent'> 
    <ul> 
     <li>Three</li> 
     <li> 
     <ul> 
      <li>Four</li> 
      <li id='child'>Five</li> 
     </ul> 
     </li> 
     <li>Six</li> 
    </ul> 
    </li> 
</ul> 

,并具有以下两个元素:

var child = $("#child"); 
var parent = $("#parent"); 

在这个例子中,很明显的是:

child.parent().parent().parent().parent(); 

将是相同的节点“父母。但是我所遍历的列表是可变大小的,所以我需要找到一种方法来找出需要经过多少'.parent()才能到达该父节点。我总是知道孩子和父母在哪里,我只是不知道它们之间有多少'层'。

是否有任何内置的jQuery方法来做这样的事情,或者我最好的办法是递归函数获取父对象,检查父对象是否是我想要的节点,并且如果不在其父对象上调用它自己?

编辑:我可能没有足够清楚地解释我自己。我的问题是没有得到父母,我的问题是找出有多少节点之间的孩子和父母。在我上面的例子中,子节点和父节点之间有3个节点。这是我需要找到的数据。

回答

7

如果你只是想给父母,这样做:

child.parents("#parent"); 

这比做更容易:

child.parent().parent().parent(); 

或者是有你需要知道多少其他原因?

一个简单的循环可以做到这一点:

var node = child[0]; 
var depth = 0; 
while (node.id != 'parent') { 
    node = node.parentNode; 
    depth++; 
} 
+0

我需要知道这个号码,因为我想使用它。 – 2009-09-07 04:41:38

1

尝试最接近()函数

http://docs.jquery.com/Traversing/closest#expr

这会给你UL父母的总数:

VAR numofuls = $(本)。家长( 'UL')长度;

+0

这并没有告诉我许多节点是如何在两者之间,虽然,这是一个数据,我需要。 – 2009-09-07 04:35:43

+0

添加脚本来告诉你有多少个父母。 – PetersenDidIt 2009-09-07 05:04:33

相关问题