2012-04-12 4 views

답변

1

당신도 할 수 중첩 검색을 쉽게하기 위해 일부 ID, 클래스, 또는 데이터 수준의 개체를 추가하거나이 약간 hackish 버전을 할 수있는 : 나는 데이터를 추가 제안 할

$('div.A').first().children('span.B').last(); 

을 수준을 처리하는 수준, ID 또는 다른 클래스.

예를 들어, 귀하의 HTML을 변경

<div class="A" data-level="first"> 

    <span class="B" data-level="second"></span> 
    <span class="B" data-level="second"></span> 

    <span class="B" data-level="second"> 
    <div class="A" data-level="third"> 
     <span class="B" data-level="fourth"></span> 
    </div> 
    </span> 

</div> 

당신은 같은 일을 수행 할 수 있습니다

$('span.B[data-level="second"]').last(); 

+0

데이터 수준으로 당신은 내가''요소가있는 허용 된 기존 속성을 사용하고의 깊이를 저장하는 데 사용한다는 의미 할 ''요소? 예를 들어'title' 속성에? ID는 고유해야하므로 실제로 ID를 추가 할 수는 없습니다. – Jack

+0

내 편집을 참조하십시오. 귀하의 html이 너무 약간 수정되었습니다 내가 그걸도 – Evan

+0

은 허용 된 속성'데이터 수준'고쳐? – Jack

0

jQuery를이 :last 선택이있다. 어떤 개체를 선택하려고하는지 아직 명확하지 않습니다.

1) 루트를 식별 클래스 보내기 :

<div class="A root"> 

    <span class="B></span> 
    <span class="B></span> 

    <span class="B"> 
    <div class="A"> 
     <span class="B"></span> 
    </div> 
    </span> 

</div> 

그리고이 셀렉터를 루트 <div class="A">의 직접적인 자식 인 지난 <span class="B"></span>를 원하는 경우

는, 당신은 이러한 옵션이 있습니다 :

A.root > .B:last 

2)를 식별 할 루트 개체의 부모를 지정

body > .A > .B:last 

3) 루트 개체 식별하는 몇 가지 코드를 사용

$(".A").filter(function() { 
    // filter out items that have an "A" class as a parent 
    return($(this).parents(".A").length == 0); 
}).children(".B:last"); 
+0

문제는 패턴 반복입니다. 재귀 함수 호출로 생성됩니다. 루트 요소에 고유 한 것을 추가 할 수 없습니다. – Jack

+0

@ 잭 - 아마도 당신이 뭘하려고하는지 이해하지 못할 수도 있습니다. 나는 당신이 최상위 수준 "A"요소의 직접적인 하위 요소 인 마지막 B 요소를 원한다고 생각했습니다. 그렇게하기 위해서, 어떻게 든 최상위 레벨 "A"요소를 식별해야합니다. 내 새로운 옵션 3)은 코드를 사용하여 식별합니다. 당신이 다른 것을하려고한다면, 특별히 명확하지 않기 때문에 당신이하려고하는 것을 더 설명하십시오. – jfriend00