2009-09-07 4 views
1

간단한 작업을 수행하는 빠른 방법을 찾는 데 약간의 문제가 있습니다.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> 

그리고 다음과 같은 두 가지 요소가 있습니다 :

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

이 '와 같은 노드가 될 :이 예에서

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

을,이 것이 분명 나는 다음과 같은 HTML을 말해봐 부모의'. 그러나 내가 횡단하고있는 목록은 가변 크기이므로, 얼마나 많은 '. 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

번호를 알고 싶습니다. 사용하고 싶어서입니다. –

1

가장 가까운() 함수

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

이 당신에게 UL 부모의 총 수를 줄 것이다 시도해보십시오.

var에 numofuls의 =의 $ (이) .parents ('UL에게') 길이 ;

+0

이 많은 노드가 생각 사이에서 얼마나 말하지 않으며, 그것이 내가해야 할 데이터의 조각입니다. –

+0

부모가 얼마나 많은지 알려주는 스크립트가 추가되었습니다. – PetersenDidIt

관련 문제