Я написал только плагин для этого некоторое время назад
(function($){
$.fn.wrapChildren = function(options) {
var options = $.extend({
childElem : undefined,
sets : 1,
wrapper : 'div'
}, options || {});
if (options.childElem === undefined) return this;
return this.each(function() {
var elems = $(this).children(options.childElem);
var arr = [];
elems.each(function(i,value) {
arr.push(value);
if (((i + 1) % options.sets === 0) || (i === elems.length -1))
{
var set = $(arr);
arr = [];
set.wrapAll($("<" + options.wrapper + ">"));
}
});
});
}
})(jQuery);
Вы передаете объект опций, определяющий
- childElem - фильтр выбора ближайших дочерних элементов для переноса
- sets - как вы хотите сгруппировать дочерние элементы. Например, наборы 3 в вашем случае. По умолчанию 1
- wrapper - элемент для переноса дочерних элементов. По умолчанию
<div>
Используйте так же, как на ваших данных. Вам нужно определить родительский элемент для divs
$(function() {
$('body').wrapChildren({
childElem : 'div.bb_box_tl, div.bb_box_l, div.bb_box_lb' ,
sets: 3,
wrapper: 'div class="box-cont"'
});
});
Вот Рабочая демонстрация с некоторыми данными.
UPDATE:
Я написал пост в блоге со слегка измененной и улучшенной версией этой