2011-03-02 3 views
3

저는 아직 jQuery 셀렉터 닌자가 아닙니다. 누군가가 찌를 수 있기를 바라고 있습니다.다음 "b"가 아닌 행까지 행 클래스 "a"다음에 클래스 "b"행의 모음을 가져 옵니까?

중첩 된 사전을 기반으로하는 행이있는 테이블을 만들기 위해 jQuery 템플릿을 사용하고 있습니다 (중첩 된 5 개 정도의 레이어). 이것은 조직 구조 및 각 그룹의 사람들에 관한 데이터를 기반으로합니다. 아래 부분 코드를 기반으로 내가하고자하는 것은 - 각 "팀"행에 대해 - 해당 팀에 속한 "인원"의 행을 얻습니다. 여기에 내가 가지고있는 것, 읽기 쉽게하기 위해 들여 쓰기가 있습니다.

<tr class="division">...</tr> 
    <tr class="team">...</tr> 
     <tr class="person">...</tr> 
     <tr class="person">...</tr> 
    <tr class="team">...</tr> 
     <tr class="person">...</tr> 
     <tr class="person">...</tr> 
     <tr class="person">...</tr> 
<tr class="division">...</tr> 
    <tr class="team">...</tr> 

내가 지금 가지고있는 각 행에 대해 모든 class="team" 행을 취득하고, jQuery를 선택, 나는 다음 비 person 때까지, 이후의 각 class="person" 행을 얻을 수있는 선택을 찾기 위해 노력하고있다 열. 나는 그것을 올바르게 할 수 없다. .nextAll() 방법 대신 무언가가 필요합니까?? 나는 시간이 같은 일치해야 위의 HTML에 대한 출력을 콘솔 그래서 것에 대한 콘솔에 로그인하고있어

$('table tr.team').each(function() { 
    var personRows = $(this).nextUntil('tr.team'); 
    console.log('row count: ' + personRows.length); 
}); 

... 불행하게도

> row count: 2 
    > row count: 3 

, 내가 라인을 따라 뭔가 더 받고 있어요 이 때문에, 그 때문에 "division" - 클래스 행.

내가 원하는 것을 얻기 위해 내 머리를 짚어 보려고했지만, 원하는 효과를 얻을 수 없습니다. 어떤 아이디어? 어떤 우아한 솔루션? if 절을 어딘가에 던져서 선택기에 포함 할 행이 있는지 결정해야합니까?

답변

3

좋아요, 제가 생각한 것 같습니다. 나는 오랫동안 그것을 알아 내려고 노력했지만 질문을 올렸을 때까지는 할 수 없었습니다. 어떻게 진행되는지 알 수 있습니다.

두 경우 모두 .filter()은 내 친구입니다.

var personRows = $(this).nextUntil('tr.team').filter('tr.person'); 
+0

참고 : 요소 유형 (이 경우 테이블 행)을 지정했을 때만 원하는 효과를 얻을 수있었습니다. –

관련 문제