2010-11-22 7 views
2

jQueryを使用して項目を選択する際の手助けが必要です。それは非常に簡単な解決策かもしれませんが、私は要素を複製したり複製したりすること以外に、正しいものを見ることはできません。 だから、ここに行きます。私は、ページ上で、この種の構造を持っている:jQueryで特定の数の要素をグループ化するにはどうすればよいですか?

http://content.screencast.com/users/iamntz/folders/Jing/media/2fa05c60-f4fc-4178-b9b6-187831e1ca31/2010-11-22_1741.png

私はラッパー要素にそれぞれ6つの要素のグループにしたい、.quotesWrapper > (.sixQuoteWrapper > .quote * 6) * 4を持つために。

どのように私はこれを達成することができましたか?ありがとう!

答えて

1

私はそれをさらにいくつかの分を与えた場合、私は、各せずにこれを得ることができると確信しているが、これは動作します。ここで

js fiddle

$('.quotesWrapper .quote.split').each(function(){ 
    $(this).nextUntil('.quote.split') 
     .andSelf() 
     .wrapAll('<div class="wrap" />') 
}); 
+0

ありがとう!これは素晴らしい作品です! –

+0

@Ionut Staicu - ようこそ! –

+0

+1、これも簡潔な解決策です:-) –

0

私はこれがあなたの望むものだと信じています。基本的に、div.quoteWrapperの下にdiv.quoteアイテムがなくなるまでループします。これは、回数のセレクタが実行されているので:lt() selector

while ($("div.quoteWrapper > div.quote").length) { 
    $("div.quoteWrapper > div.quote:lt(6)").wrapAll('<div class="sixQuoteWrapper"></div>'); 
} 
+0

'.wrapAllは()'()ラップ '、必要なものである'個々の要素をラップしています。 –

+0

@Andy E. Good catch ...ありがとう –

2

@ジョンHartsockのソリューションは、簡潔かつ効率的では使用しています。

var i = 0, 
    quotes = $("div.quoteWrapper").children(), 
    group; 

while ((group = quotes.slice(i, i += 6)).length) { 
    group.wrapAll('<div class="sixQuoteWrapper"></div>'); 
} 

このソリューションでは、短いセレクタを1回だけ実行し、子を取得して高速化しています。

の作業のデモ:http://jsfiddle.net/AndyE/FFf6z/

関連する問題