2014-09-10 85 views
1

我需要構建簡單的標籤菜單。問題是,我必須產生somethink這樣...從div到列表的克隆元素

<ul id="menu"> 
    <li class="First">First</li> 
    <li class="Second">Second</li> 
    <li class="Third">Third</li> 
</ul> 

......從這樣的

<div class="someclass"> 
    <li class="First">First</li> 
    <p>text</p> 
    </div> 
<div class="someclass"> 
    <li class="Second">Second</li> 
    <p>text</p> 
    </div> 
<div class="someclass"> 
    <li class="Third">Third</li> 
    <p>text</p> 
    </div> 

somethink我試圖解決這個broblem與我的JS純粹知識...

<div id="PutAfter"> 
<ul id="menu"> 
    <li id="m">First</li> 
    <li id="m">Second</li> 
    <li id="m">Third</li> 
</ul> 
    <div style="display:none"> 
<div class="someclass"> 
    <li id="m">4</li> 
    <p>text</p> 
    </div> 
<div class="someclass"> 
    <li id="m">5</li> 
    <p>text</p> 
    </div> 
    <div class="someclass"> 
    <li id="m">6</li> 
    <p>text</p> 
    </div> 
    </div> 

和簡單的腳本

$(document).ready(function(){ 
    $('#4').clone().insertAfter($('#m3')); 
    $('#5').clone().insertAfter($('#4')); 
    $('#6').clone().insertAfter($('#5')); 
}); 

正如你可以看到有一個大問題 - 重複在IDID :(我不能生成<li>元素的腳本我腳本,因爲菜單加載在header.phtml文件和<div>內容footer.phtml所以我不知道究竟有多少IDS我需要這就是爲什麼我不能使用PHP獲取菜單項 - 忘記標準的「從數據庫中獲取」其Zend ...)。也許我需要生成或只是得到一些「數組」?

我會很感激任何幫助!

+1

重複的ID的似乎是至少你的問題,一個列表元素不能是DIV的孩子,所以標記可能不是什麼,甚至你認爲它是,因爲在大多數情況下,瀏覽器將嘗試修復這樣的東西。 – adeneo 2014-09-10 17:36:32

+0

談論重複的ID ......如果問題是「李」的數量可能會有所不同,爲什麼不設置一個類而不是一個ID? – LcSalazar 2014-09-10 17:44:06

回答

0

您可以選擇所有li.someclass元素,克隆並添加到新創建的ul,然後添加它來body

Fiddle

$(document).ready(function() 
{ 
    var ul = $('<ul>', { id: "menu" }); 
    ul.append($('.someclass li').clone()); 
    $("body").append(ul); 
});