2012-04-19 27 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"> 
<div class="award"> 
<div class="award"> 
<div class="award"> 

にはどうすれば.region後に第三の要素をターゲットにすることができますか?

<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"> 

最初の2つの.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があり、我々はすべての三番目でないものを​​(nextUntil)ではありません最初の1までの自分の兄弟を取得し、.region要素のそれぞれをつかみ、そしてfilterアウト。

(私は私のfirst working copymapを使用し、なぜわからないが、filterがはるかに理にかなっています。)

+0

divのそれぞれが実際にネストされておらず、閉鎖されていると仮定します(OPの例では悪いマークアップ)。これは10番目(最後)のdivを選択しません第2の "第3"要素として。 –

+0

うん、私はそれが十分ではないように見えたので、元を見ていた:)それを少し勉強しなければならなかった:)これは現在作業中であることを確認してください。 –

+0

@ MarkSchultheiss:ええ、私はライブの例をしたときにちょっと顔をしかめました。そして、私は、フィックスでさえ、 'filter'がより適切な選択肢になる' map'を使用していたので、それも修正したことに気付きました。 –