围绕每三个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, '');