使用jQuery将三个重复的div组包装成一个

Dom*_*Dom 4 jquery

我这里有另一个问题.我有几个重复的div组.一组中有3个不同类别的div.

我需要做的是将其包装成一个"容器".当我使用wrapAll时,它将所有内容包装成一个div.

这是我的HTML:

<div class="bb_box_tl"></div>
<div class="bb_box_l"></div>
<div class="bb_box_lb"></div>

<div class="bb_box_tl"></div>
<div class="bb_box_l"></div>
<div class="bb_box_lb"></div>

<div class="bb_box_tl"></div>
<div class="bb_box_l"></div>
<div class="bb_box_lb"></div>
Run Code Online (Sandbox Code Playgroud)

这是一体的.

因为我的结果我希望他们看起来像这样:

<div class="box-cont">
    <div class="bb_box_tl"></div>
    <div class="bb_box_l"></div>
    <div class="bb_box_lb"></div>
</div>

<div class="box-cont">
    <div class="bb_box_tl"></div>
    <div class="bb_box_l"></div>
    <div class="bb_box_lb"></div>
</div>

<div class="box-cont">
    <div class="bb_box_tl"></div>
    <div class="bb_box_l"></div>
    <div class="bb_box_lb"></div>
</div>
Run Code Online (Sandbox Code Playgroud)

提前谢谢你的帮助

Rus*_*Cam 7

我刚刚写了这个插件

(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);
Run Code Online (Sandbox Code Playgroud)

您传入一个选项对象定义

  • childElem - 要包装的直接子节点的过滤器选择器
  • sets - 如何对子元素进行分组.例如,在您的情况下为3组.默认值为1
  • wrapper - 包装子元素的元素.默认为 <div>

像这样使用你的数据.您需要为div定义父元素

$(function() {   
  $('body').wrapChildren({ 
             childElem : 'div.bb_box_tl, div.bb_box_l, div.bb_box_lb' , 
             sets: 3, 
             wrapper: 'div class="box-cont"'
  });   
});
Run Code Online (Sandbox Code Playgroud)

这是一个包含一些数据的工作演示.

更新:

我写了一篇博文,其中略有修改和改进版本