如何将jQuery中的某些元素进行分组?

如何将jQuery中的某些元素进行分组?

问题描述:

我需要一些使用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

任何想法我可以如何实现这一目标?谢谢!

我相信我能得到这个无需每次如果我给它几分钟,但这个工程。

这里是一个js fiddle

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

我相信这是你想要的。基本上你循环直到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

@约翰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/