2012-04-19 7 views
0

내가 마크 업 다음과 같은 한 요소의 모든 n 번째 형제를 대상으로?jQuery를이

<div class="region"> 
<div class="award"> 
<div class="award"> 
<div class="region"> 
<div class="award"> 
<div class="award"> 
<div class="award third"> 
<div class="award"> 
<div class="award"> 
<div class="award third"> 

첫 번째 .aaward 요소가 처음 .region 후에 계산되지 않습니다.

미리 감사드립니다. eq과 결합

+0

가능한 중복 http://stackoverflow.com/questions/1260277/addclass-every-nth – Armatus

+0

@Armatus : 저는 그렇게 생각하지 않습니다. 시작점이 다양하지 않습니다. –

+0

이러한 div는 * 형제가 될 예정입니다. * 맞습니까? 당신은 그들을 폐쇄하지 않았습니다. 즉, 거기에 8 층의 아이들이 있다는 것을 의미합니다. 그러나 나는 그것이 당신이 의미하는 바가 아니라고 확신합니다. –

답변

2

nextUntil 그것을 수행해야합니다

$("div.region").each(function() { 
    $(this).nextUntil(":not(.award)").eq(2).addClass("third"); 
}); 

아니를하는 작은보다 더 복잡, 6 요소를 처리하는 :

$("div.region").each(function() { 
    $(this).nextUntil(":not(.award)").filter(function(index) { 
     return index % 3 == 2; 
    }).addClass("third"); 
}); 

Live example을 |

source이 우리는 모든 세 번째없는 사람을 .award (nextUntil)없는 첫 번째까지 자신의 형제를 얻을 수는 .region의 각 요소를 잡은 filter 밖으로.

(내 first working copymap을 사용하는 이유는 확실하지가, filter 훨씬 더 의미가 있습니다.)

+0

div가 실제로 중첩되지 않고 닫혀 있다고 가정합니다 (예 : OP의 나쁜 태그).이 태그는 10 번째 (마지막) div를 선택하지 않습니다. 두 번째 "세 번째"요소로. –

+0

그래, 난 충분하지 않아 보였다 : 원래 그것을보고 :) 그것을 조금 공부했다 :) 지금 일하는 것으로 확인하십시오. –

+0

@MarkSchultheiss : 예, 제가 실제 예제를 만들었을 때 약간의 얼굴을 보았습니다. 그리고 난 그 수정에서조차도,'filter'가 더 적절한 선택이 될 곳에'map'을 사용한다는 것을 깨달았습니다. 그래서 그것 역시 고정 시켰습니다. –