2014-09-10 84 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); 
});