围绕每三个div包含一个div

假设我有6个子div并且没有唯一标识符:

使用jquery,我想用

包装每一组3。 所以它会呈现为:

 

最简单的方法是什么?

哇,好挑战的问题=)

 while(($children = $(':not(.parent)>.child:lt(3)')).length) { $children .parent() .append( $('
') .append($children.remove()) ); }

编辑:不知道wrapAll方法,所以:

 while(($children = $(':not(.parent)>.child:lt(3)')).length) { $children.wrapAll($('
')); }

这应该这样做:

 var $children = $('.child'); for(var i = 0, l = $children.length; i < l; i += 3) { $children.slice(i, i+3).wrapAll('
'); }

DEMO

我写了一个小插件,我在这样的场景中使用它。 它需要一个集合,并将其拆分为x块(其中x是每个块的大小):

 $.fn.chunk = function( cLen ) { var chunks = []; while ( this.length ) { chunks.push( this.splice(0, cLen) ); } return $(chunks); }; 

它可以像这样使用:

 $('.child').chunk(3).each(function() { $(this).wrapAll('
'); });

这是一个小提琴

或者,作为此目的的插件:

 $.fn.wrapEvery = function( cLen, wrapperEl ) { while ( this.length ) { $( this.splice(0, cLen) ).wrapAll( wrapperEl ); } }; 

可以这样使用:

 $('.child').wrapEvery(3, '
');

这是另一个小提琴