Не самый элегантный способ, но работает.
var sel;
while ( (sel = $('.main > div:not(.pack1)')).length > 0 )
{
sel.slice(0,4).wrapAll('<div class="pack1"></div>');
}
Здесь скрипка .
Обновление
Здесь со счетчиком для класса. Мы должны использовать 2-й класс pack
для исключения всех упакованных div.
var sel;
var count = 1;
while ( (sel = $('.main > div:not(.pack)')).length > 0 )
{
sel.slice(0,4).wrapAll('<div class="pack pack'+ count++ +'"></div>');
}
И скрипка
Или мы идем с
var sel;
var count = 1;
while ( (sel = $('.main > div:not([class^="pack"])')).length > 0 )
{
sel.slice(0,4).wrapAll('<div class="pack'+ count++ +'"></div>');
}
скрипка для этого.