サイズに基づいて.big
割り当てられた一連のDIVがあります。.small
それらは2つまたは3つのグループにラップする必要があります。実際に.big
は、割り当てられたスペースに収まるのは2つだけです。
2つの.big
DIVが互いに隣接して存在する場合、それらは2つのグループにラップする必要があります。それ以外の場合、DIVは3つのグループにラップする必要があります。
私が間違ったこととそれを機能させる方法を教えてください。以下は、ラップを壊すべき場所についてのコメント付きの例です。その下に私が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