我的html中可能有任意数量的文章:
<div id="main">
<article></article>
<article></article>
<article></article>
<article></article>
<article></article>
<article></article>
<article></article>
<article></article>
<article></article>
<article></article>
<article></article>
<article></article>
<article></article>
<article></article>
</div>
现在,我想分成一组所有文章。
var group = parseInt($('#main article').length / 3, 10); // results 4
现在,我如何用一个小组中的四篇文章包装它?
结果应该是这样的:
<div id="main">
<div class="group">
<article></article>
<article></article>
<article></article>
<article></article>
</div>
<div class="group">
<article></article>
<article></article>
<article></article>
<article></article>
</div>
<div class="group">
<article></article>
<article></article>
<article></article>
<article></article>
</div>
<div class="group"><!--the remaining two articles-->
<article></article>
<article></article>
</div>
</div>
答案 0 :(得分:8)
尝试一个简单的for循环
var $articles = $('#main article'),
length = $articles.length;
for (var i = 0; i < length; i = i + 4) {
$articles.slice(i, i + 4).wrapAll('<div class="group"/>')
}
演示:Fiddle
答案 1 :(得分:0)
尝试,
while($('#main > article').length > 0)
{
$('#main > article:lt(4)').wrapAll('<div class="group"></div>');
}
答案 2 :(得分:0)
var group = parseInt($('#main article').length / 3, 10); // results 4
var grpCount = Math.ceil($('#main article').length / group);
for(var i=0 ; i < grpCount ;i++){
if(i == 0) {
$('#main article:lt('+group+')').wrapAll("<div class='group'></div>")
} else if( i == (grpCount-1)) {
$('#main article:gt('+parseInt((group*i)-1)+')').wrapAll("<div class='group'></div>")
} else {
$('#main article:lt('+parseInt(group*(i+1))+'):gt('+parseInt((group*i)-1)+')').wrapAll("<div class='group'></div>")
}
}
答案 3 :(得分:0)
您也可以尝试.each()
jquery函数:
var articles = $('#main').find('article');
$.each(articles, function(i, el) {
if(i % 4 == 0) {
articles.slice(i , i+4).wrapAll('<div class="group">');
}
});