2010-11-22 36 views
2

我需要一些使用jQuery選擇項目的快速幫助。這可能是一個非常簡單的解決方案,但是......除了克隆和複製元素之外,我看不到一個正確的解決方案。 所以,我們走吧。我有一個頁面上的這種結構:如何將jQuery中的某些元素進行分組?

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

我想每個組六個要素爲包裝元素,纔能有.quotesWrapper > (.sixQuoteWrapper > .quote * 6) * 4

任何想法我可以如何實現這一目標?謝謝!

回答

1

我相信我能得到這個無需每次如果我給它幾分鐘,但這個工程。

這裏是一個js fiddle

$('.quotesWrapper .quote.split').each(function(){ 
    $(this).nextUntil('.quote.split') 
     .andSelf() 
     .wrapAll('<div class="wrap" />') 
}); 
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()`是什麼需要,'包裹()`單獨包裝的每個元素。 – 2010-11-22 16:09:56

+0

@Andy E.很好趕上...謝謝 – 2010-11-22 16:12:57

2

@約翰Hartsock的解決方案是簡潔但低效的,因爲次數的選擇器運行。我建議對他的變化:

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

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

這種解決方案只是一次運行一個較短的選擇和檢索的孩子,使其更快。

工作演示:http://jsfiddle.net/AndyE/FFf6z/

相關問題