2012-11-26 45 views
4

我如何可以組合多種ul s轉換一個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> 
​ 

+0

是否有進行排序?否則,你只需要刪除 – jtheman

+0

之間...的和

    爲了將是有益的@jtheman – breezy

回答

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 

定製根據需要選擇選擇器;我建議使用通用類而不是通用標籤選擇器。

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/

+0

@ahren,它會再次追加他們,但不會造成重複。 – gpojd

+0

@gpojd - 是的,我看到現在,刪除評論 – ahren

+0

呀,did'nt知道你實際上可以刪除元素,並在接下來的鏈條得到了孩子們。以前從未嘗試過? – adeneo

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

FIDDLE

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