我有一系列分配.big
或.small
基于大小的 DIV。它们需要以两个或三个为一组进行包装。实际上,只有两个.big
s 可以放入分配的空间中。
如果两个.big
DIV 相邻存在,则应将它们以两个一组的形式包装。否则,DIV 应该以三个为一组进行包装。
请让我知道我做错了什么以及如何使它工作。下面是一个示例,其中包含关于应在何处断开换行的注释。下面是我在 jQuery 中尝试过的内容,以及jsFiddle 的链接。
<div class="big post">big</div>
<div class="big post">big</div>
<!-- should be wrap break -->
<div class="big post">big</div>
<div class="big post">big</div>
<!-- should be wrap break -->
<div class="big post">big</div>
<div class="small post">small</div>
<div class="big post">big</div>
<!-- should be wrap break -->
<div class="small post">small</div>
<div class="small post">small</div>
<div class="big post">big</div>
<!-- should be wrap break -->
<div class="big post">big</div>
<div class="small post">small</div>
<!-- should be wrap break -->
我认为if
下面的 ,效果很好,但是else
打破了所有的东西。
$('.post').each(function() {
if ( $(this).hasClass('big') && $(this).next('.post').hasClass('big') ) {
var allElements = $(this).next().andSelf(),
WRAP_BY = 2;
for (var i = 0; i < allElements.length; i += WRAP_BY) {
allElements.slice(i, i + WRAP_BY).andSelf().wrapAll('<div class="flowed" />');
}//for
}//if
else {
// the else breaks all the things
var allElements = $(this).next().andSelf(),
WRAP_BY = 3;
for (var i = 0; i < allElements.length; i += WRAP_BY) {
allElements.slice(i, i + WRAP_BY).andSelf().wrapAll('<div class="flowed" />');
}//for
}//else
});//each