我的导航是一个无序列表,这里是我正在关注/必须遵循的简单结构,以便我的jQuery插件正常工作,因此使这个代码结构成为必需:
<nav id="mp-menu" class="mp-menu">
<div class="mp-level">
<ul id="demo1" class="nav">
<li>
<a href="#">Devices</a>
<div class="mp-level">
<h2>Devices</h2>
<a class="mp-back" href="#">back</a>
<ul>
<li><a href="#">Mobile Phones</a></li>
<li><a href="#">Televisions</a></li>
<li><a href="#">Cameras</a></li>
</ul>
</div>
</li>
<li>
<a href="#">Magazines</a>
<div class="mp-level">
<h2>Magazines</h2>
<a class="mp-back" href="#">back</a>
<ul>
<li><a href="#">National Geographic</a></li>
<li><a href="#">Scientific American</a></li>
</ul>
</div>
</li>
...
</ul>
</div>
</nav>
我需要提供一个后备,我选择了另一个需要使用与上面不同的结构的jQuery插件。我需要删除类名为.mp-level
的DIV,但仍保留所有无序列表,包括.mp-level
子列表。
结果只是没有标题和DIV'的无序列表。我的下面的代码是删除正确的元素,但我的问题是重新插入子无序列表(特别是级别2):
$( "#demo1 h2, .mp-back" ).remove();
$( ".mp-level ul li .mp-level" ).detach();
$( ".mp-level ul li" ).append('.mp-level ul li .mp-level ul');
在我移除父母后,任何人都有任何建议如何重新插入儿童UL ?
答案 0 :(得分:0)
您可以将分离的节点(包装在jQuery对象中)保存为变量,然后在.append()
调用中使用该变量。
这样的事情:
// this selector doesn't select anything from the example html, btw
var $mp_level = $( ".mp-level ul li .mp-level" ).detach();
$(".mp-level ul li").append($mp_level);
答案 1 :(得分:0)
你可以这样做
$("#mp-menu").find(".mp-level").each(function(i,n){//each ".mp-level"
$(n).parent().append($(n).children());//append children to parent
$(n).remove();//remove actual div
});