2009-09-07 121 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

相關問題