我在导航中使用了嵌套列表。如何使用Jquery将嵌套列表拆分为单独的列表,每个嵌套列表分开但保持分隔列表与原始标题一起?
html:
<ul id="bigList">
<li><a href="#">Diary products</a>
<ul>
<li><a href="#">Milk</a>
<ul>
<li><a href="#">Goat</a></li>
<li><a href="#">Cow</a>
<ul>
<li><a href="#">Smelly</a></li>
<li><a href="#">Extra smelly</a></li>
</ul>
<li><a href="#">Soya</a></li>
</li>
</ul>
</li>
<li><a href="#">Eggs</a></li>
<li><a href="#">Cheese</a></li>
<li><a href="#">Pasta</a></li>
</ul>
</li>
</ul>
期望的输出:
<ul>
<li><a href="#">Diary Products</a>
<ul>
<li><a href="#">Milk</a></li>
<li><a href="#">Eggs</a></li>
<li><a href="#">Cheese</a></li>
<li><a href="#">Pasta</a></li>
</ul>
</li>
</ul>
<ul>
<li><a href="#">Milk</a>
<ul>
<li><a href="#">Goat</a></li>
<li><a href="#">Cow</a></li>
<li><a href="#">Soya</a></li>
</ul>
</li>
</ul>
<ul>
<li><a href="#">Cow</a>
<ul>
<li><a href="#">Smelly</a></li>
<li><a href="#">Extra smelly</a></li>
</ul>
</li>
</ul>
到目前为止的Javascript:
$(function () {
var $bigList = $('#bigList'),
group;
while ((group = $bigList.find('li:lt(20)').remove()).length) {
$('<ul/>').append(group).appendTo('body');
}
});
这是一个小提琴
答案 0 :(得分:6)
这个简单的小代码可以做到:
var myList = $('<ul>');
var $originalList = $('#bigList');
$originalList.find('li:has(li)').each(function(){
var $this = $(this);
$this.clone().appendTo(myList).find('>ul >li >ul').remove();
})
$('body').append(myList);
答案 1 :(得分:0)
我正在使用选择器ul&gt; li> ul,输出结果
$(function(){
$('ul > li > ul').each(function(i){
var clone = $(this).clone();
clone.find('ul').remove();
var clone2 = $(this).parent().clone();
clone2.children('ul, li').remove();
clone2.append(clone);
var clone3 = $(this).parent().parent().clone();
clone3.children('ul, li').remove();
clone3.append(clone2);
clone3.appendTo('#output');
});
})