2012-08-31 107 views
1

具有以下結構:建築動態與jQuery子菜單

<div id="block1"> 
    <ul class="category"> 
     <li>Comedy</li> 
    </ul> 
</div> 

<div id="block2"> 
    <ul class="category"> 
     <li>Comedy</li> 
     <li>Drama</li> 
    </ul> 
</div> 

與一個PHP foreach()產生的無序列表category,並且在一些塊中的ul可以含有1 li,而在其他2,3或X li,所以我需要將這些額外的li轉換爲子菜單中的第一個li

  • 我的問題是,如何選擇第一個之後的<li>的其餘部分?因爲一旦我有li的其餘部分,我可以將它們包裝在另一個ul中並構建子菜單。

我可以使用下面的代碼來篩選不止一個選項的列表,但是什麼呢?

$('.categories').filter(function() { 
     if($(this).children("li").length > 1) { 
      console.log($(this).text()); 
     } 
    }); 

回答

1

您可以使用wrapAll方法。

$('ul.category').each(function(){ 
    $('li:gt(0)', this).wrapAll('<ul/>') 
}) 
+0

哇,這是真棒:d!感謝您的解決方案 – Alex

+1

也許'li:gt(0)'會稍快。 – VisioN

+0

@VisioN感謝您的建議 – Alex

0

要獲取所有li元素第一次使用後.slice()

$(this).children("li").slice(1); 

那麼你可以用這些元素的工作,做你需要的任何包裹