包装元素的jquery

包装元素的jquery,jquery,Jquery,我有这个代码,每3个我都需要用div来包装 (原件) (应该成为) 对水平填充内容的每个“子div”应用一个类,并给它CLRR:both;作为css atribute,它将以您想要的方式显示。如果要垂直显示,请应用float:left;相反。这是一项艰巨的工作,可能不是最明智的做法: var $entries = $("#entries"); var $div = $('<div></div>').appendTo($entries); while($div.next

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

(原件)


(应该成为)


对水平填充内容的每个“子div”应用一个类,并给它CLRR:both;作为css atribute,它将以您想要的方式显示。如果要垂直显示,请应用float:left;相反。

这是一项艰巨的工作,可能不是最明智的做法:

var $entries = $("#entries");
var $div = $('<div></div>').appendTo($entries);
while($div.next().length > 0){
  $div.append($div.nextAll().slice(0,3));
  $div = $('<div></div>').appendTo($entries);
}
var$entries=$(“#entries”);
var$div=$('').appendTo($entries);
而($div.next().length>0){
$div.append($div.nextAll().slice(0,3));
$div=$('').appendTo($entries);
}

我已经准备好了这个插件,很好地完成了这项工作

(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);
这里有一个游戏。将/edit添加到URL以播放代码

编辑:

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

我已经创建了

var$c=$(“#条目”);
而($c.children('a')。长度){
$c.children('a:lt(3)')。wrapAll('');
}

上使用演示(尽管使用不同的HTML结构)认为需要更多信息,这只是纯HTML还是您从其他地方生成的HTML?为提供灵活的解决方案而感到荣幸。这似乎没有按预期工作。它在条目的末尾追加一个
`然后检查是否有下一个元素,因为
被追加到末尾。
var $entries = $("#entries");
var $div = $('<div></div>').appendTo($entries);
while($div.next().length > 0){
  $div.append($div.nextAll().slice(0,3));
  $div = $('<div></div>').appendTo($entries);
}
(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);
$(function() {

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

});
var $c = $('#entries');
while ($c.children('a').length) {
    $c.children('a:lt(3)').wrapAll('<div>');
}