我想将元素列表拆分为4个组,除了前一个应该只包含2个元素的组。
x x x x x x x
x x x x x x x
x x x x x x
x x x x x x
这将分成4个小组:
for ( var i = 0; i < $(".el").length; i+=4 ) {
$(".el").slice(i, i + 4).wrapAll('<div class="group">');
}
https://jsfiddle.net/p13rcd1c/
使一个组只包含2个元素的方法是什么?
答案 0 :(得分:3)
通过预先计算组数,如果'group'-index是最后一个,则可以调整切片:
var els = $(".el"),grp = 4, cnt = Math.ceil(els.length/grp), rem = els.length % grp, ind = 0;
for(var i = 0; i <= cnt;i++) {
els.slice(ind, ind += (i==cnt-2 ? rem : grp)).wrapAll('<div class="group">');
}
编辑:如果总金额可能与填写不同,则为备用版本。此版本使用4填充最后一个组,但在此之前用剩余部分填充。 (如果那不是意图,并且原始代码是必需的目标,则链接小提琴仍然包含原始代码)
var els = $(".el"),grp = 4, cnt = Math.ceil(els.length/grp), rem = els.length % grp, ind = 0;
for(var i = 0; i <= cnt;i++) {
els.slice(ind, ind += (i==cnt-2 ? rem : grp)).wrapAll('<div class="group">');
}
* { margin: 0; padding: 0}
body {
margin: 10px
}
.el {
width: 20px;
height: 10px;
margin-bottom: 2px;
background-color: blue;
}
.group {
float: left;
margin-left: 2px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="el"></div>
<div class="el"></div>
<div class="el"></div>
<div class="el"></div>
<div class="el"></div>
<div class="el"></div>
<div class="el"></div>
<div class="el"></div>
<div class="el"></div>
<div class="el"></div>
<div class="el"></div>
<div class="el"></div>
<div class="el"></div>
<div class="el"></div>
<div class="el"></div>
<div class="el"></div>
<div class="el"></div>
<div class="el"></div>
<div class="el"></div>
<div class="el"></div>
<div class="el"></div>
<div class="el"></div>
<div class="el"></div>
<div class="el"></div>
<div class="el"></div>
<div class="el"></div>