我的输出内容如下
<ul>
<li>
Songs
<ul>
<li>
Genre
<ul>
<li>
Country
</li>
</ul>
</li>
</ul>
</li>
</ul>
<ul>
<li>
Songs
<ul>
<li>
Genre
<ul>
<li>
Pop
</li>
</ul>
</li>
</ul>
</li>
</ul>
请忽略为何内容如此显示。我的问题是,我如何使用jQuery删除重复的父母<li>
和<ul>
所以它看起来像这样
<ul>
<li>
Songs
<ul>
<li>
Genre
<ul>
<li>
Country
</li>
<li>
Pop
</li>
</ul>
</li>
</ul>
</li>
</ul>
我尝试过unwrap()方法,但不知道将<li>
置于应有的位置的逻辑。
答案 0 :(得分:4)
尝试,
var uls = $('ul');
uls.first().find('ul:last').append(uls.last().find('li:last'));
uls.first().siblings('ul').remove();
答案 1 :(得分:0)
我会得到我需要的东西并重新编写它,假设整个事物周围有某种容器只是重写中间。代码可能更干净,但效果很好。
<div>
<ul>
<li>
Songs
<ul>
<li>
Genre
<ul>
<li>
Country
</li>
</ul>
</li>
</ul>
</li>
</ul>
<ul>
<li>
Songs
<ul>
<li>
Genre
<ul>
<li>
Pop
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<script>
var li='';
$.each($("li:contains('Genre') ul li"), function(i, e){
item=$(e).children('ul').text().replace(/\n/g,'').trim()||'';
if (item.length!=0){
li+='<li>'+item+'</li>';
};
});
if (li.length!=0){
var html='<ul><li>Songs<ul><li>Genre<ul>'+li+'</ul></li></ul></li></ul>';
$('div').html(html);
};
</script>