jquery包装元素

1 jquery

我有这个代码,每3个我需要用div包装

(原版的)

<div id="entries"> 
<a class="thumbnaila"><img class="thumbnail" alt="" src="blabla"/></a>
<a class="thumbnaila"><img class="thumbnail" alt="" src="blabla"/></a>
<a class="thumbnaila"><img class="thumbnail" alt="" src="blabla"/></a>
<a class="thumbnaila"><img class="thumbnail" alt="" src="blabla"/></a>
<a class="thumbnaila"><img class="thumbnail" alt="" src="blabla"/></a>
<a class="thumbnaila"><img class="thumbnail" alt="" src="blabla"/></a>
<a class="thumbnaila"><img class="thumbnail" alt="" src="blabla"/></a>
</div>
Run Code Online (Sandbox Code Playgroud)

(应该成为)

<div id="entries"> 
<div>
<a class="thumbnaila"><img class="thumbnail" alt="" src="blabla"/></a>
<a class="thumbnaila"><img class="thumbnail" alt="" src="blabla"/></a>
<a class="thumbnaila"><img class="thumbnail" alt="" src="blabla"/></a>
</div>
<div>
<a class="thumbnaila"><img class="thumbnail" alt="" src="blabla"/></a>
<a class="thumbnaila"><img class="thumbnail" alt="" src="blabla"/></a>
<a class="thumbnaila"><img class="thumbnail" alt="" src="blabla"/></a>
</div>
<div>
<a class="thumbnaila"><img class="thumbnail" alt="" src="blabla"/></a>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)

Rus*_*Cam 5

我把这个插件放在一起很好地完成了这项工作

(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 - 要包装的直接子节点的元素nodeType
  • sets - 您希望如何对子元素进行分组.例如,在您的情况下为3组.默认值为1
  • wrapper - 包含子元素的元素.默认为 <div>

在测试数据上使用如此.

$(function() {

  $('#entries').wrapChildren({ childElem : 'a' , sets: 3});

});
Run Code Online (Sandbox Code Playgroud)

这是一个可以玩的工作演示.添加/编辑 URL以使用代码.

编辑:

如果证明有用的话,我很想把它变成一个更完善的插件..

我已经创建了该插件的改进版本