将多个UL组合到一个UL中

时间:2012-11-26 20:38:53

标签: jquery

如何将多个ul合并为一个ul

例如,我如何结合以下内容。

<ul>
 <li>one</li>
 <li>two</li>
</ul>

<ul>
 <li>three</li>
</ul>

<ul>
 <li>four</li>
</ul>

<ul>
 <li>five</li>
</ul>

这样的事情

<ul>
  <li>one</li>
  <li>two</li>
  <li>three</li>
  <li>four</li>
  <li>five</li>
</ul>
​

3 个答案:

答案 0 :(得分:16)

关于.append().appendTo()的好处是它们会移动现有的DOM元素,而不是像您期望的那样复制它们:

$('ul').children('li').appendTo('ul:first'); // move all LIs to the first UL
$('ul').not(':first').remove(); // delete the extra ULs

根据需要自定义'ul'选择器;我建议使用公共类而不是通用标记选择器。

http://jsfiddle.net/j76Lu/

略微更优化(谢谢,adeneo):

$('ul').not(':first').remove().children('li').appendTo('ul:first');

http://jsfiddle.net/j76Lu/1/

甚至更好:

$('ul:gt(0)').remove().children('li').appendTo('ul:eq(0)');

http://jsfiddle.net/j76Lu/2/

答案 1 :(得分:1)

$('<ul />').append($('ul').remove().children('li')).appendTo('body');

FIDDLE     

答案 2 :(得分:0)

var newUl = $('<ul>');    
$('ul').each(function() { 
       $(this).find('li').each(function() { 
            newUl.append($(this))
       });
       $(this).remove();
    });
$('selector').append(newUl);