jquery包装元素
我有这个代码,每3个我需要用div包装
(原版的)
(应该成为)
我把这个插件放在一起很好地完成了这项工作
(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
– 要包装的直接子节点的元素nodeType -
sets
– 如何对子元素进行分组。 例如,在您的情况下,3组。 默认值为1 -
wrapper
– 包装子元素的元素.default是
在测试数据上使用类似的东西。
$(function() { $('#entries').wrapChildren({ childElem : 'a' , sets: 3}); });
这是一个可以玩的工作演示 。 添加/编辑 URL以使用代码。
编辑:
如果certificate有用的话,我很想把它变成一个更完善的插件。 。
我已经创建了一个改进版的插件
强大的工作,可能不是最聪明的事情:
var $entries = $("#entries"); var $div = $('').appendTo($entries); while($div.next().length > 0){ $div.append($div.nextAll().slice(0,3)); $div = $('').appendTo($entries); }
将一个类应用于每个水平填充内容的“sub-div”,并将其赋予clrar:both; 作为css属性,它将显示您想要的方式。 如果您想垂直显示它,请应用float:left; 代替。
var $c = $('#entries'); while ($c.children('a').length) { $c.children('a:lt(3)').wrapAll(''); }