jQuery在较小的列表中拆分长ul列表

Lez*_*ezz 11 html jquery split html-lists

我有一个很长的UL列表,我需要在较小的列表中分解,每个列表包含大约20个项目.

我以为我可以用类似的东西

$(function() {
    $("ul li:nth-child(20n)").after("</ul><ul>");
});
Run Code Online (Sandbox Code Playgroud)

但事实并非如此.知道如何以最小的CPU使用jQuery吗?

Ale*_*ton 19

我将使用您删除的lis 创建文档片段,然后将它们重新连接到您想要的位置.在这种情况下,我将它们重新添加到身体:

$(function(){
  var $bigList = $('#bigList'), group;
  while((group = $bigList.find('li:lt(20)').remove()).length){
    $('<ul/>').append(group).appendTo('body');
  }
});
Run Code Online (Sandbox Code Playgroud)

现场演示位于:http://jsbin.com/ejigu/33

  • 只是为了运行,我尝试用正则表达式来做这个:http://jsbin.com/acupof/2/edit#javascript,live ...我不能说它更优雅.:) (2认同)

cle*_*tus 7

不幸的是,没有那么简单(我至少知道).试试这个替代方案:

$(function() {
  $("ul").each(function() {
    var list = $(this);
    var size = 3;
    var current_size = 0;
    list.children().each(function() {
    console.log(current_size + ": " + $(this).text());
      if (++current_size > size) {
        var new_list = $("<ul></ul>").insertAfter(list);
        list = new_list;
        current_size = 1;
      }
      list.append(this);
    });
  });
});
Run Code Online (Sandbox Code Playgroud)

毫无疑问,你可以把它变成一个以块大小为参数的函数,但我把它作为读者的练习.