是否可以从父类(带有类名容器)中删除所有div元素而不删除foo-1类中的ul元素?
<div class="container">
<div class="foo-1">
<ul class="toon">
<li>li 1</li>
<li>li 1</li>
</ul>
</div>
<div class="foo-2">foo 2</div>
</div>
答案 0 :(得分:1)
您可以排除包含此类
的任何元素
$('.container').children(':not(:has(ul.toon))').remove();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container">
<div class="foo-1">
<ul class="toon">
<li>li 1</li>
<li>li 1</li>
</ul>
</div>
<div class="foo-2">foo 2</div>
</div>
这会保留整个.foo-1
元素
如果您还想删除父.foo-1
,则必须致电$('.toon').unwrap()
$('.container').children(':not(:has(ul.toon))').remove();
$('ul.toon').unwrap();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container">
<div class="foo-1">
<ul class="toon">
<li>li 1</li>
<li>li 1</li>
</ul>
</div>
<div class="foo-2">foo 2</div>
</div>
这两个都会保留可能附加到元素的所有事件和相关数据。
答案 1 :(得分:1)
我会克隆ul元素,删除容器内的div,然后将ul附加回来。不确定为什么你需要这样做但是如果我需要那就是我怎么做的。< / p>
var toon = $(".toon").clone();
$(".container").children().remove();
$(".container").append(room);
答案 2 :(得分:1)
我遇到两个解决方案:
我希望它可以帮到你。
答案 3 :(得分:1)
$(".container").children().each(function(){
$(this).html();
$(this).parent().append($(this).html());
$(this).remove();
});
console.log($(".container").html());
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container">
<div class="foo-1">
<ul class="toon">
<li>li 1</li>
<li>li 1</li>
</ul>
</div>
<div class="foo-2">foo 2</div>
</div>
&#13;
首先,我遍历所有孩子,然后将他们的内部html附加到父母,即。 container.This将帮助你获取子div中的所有html出来并将其附加到父级。以下将删除所有容器,只剩下html。
$(".container").children().each(function(){
$(this).unwrap();
});
console.log($(".container").html());
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container">
<div class="foo-1">
<ul class="toon">
<li>li 1</li>
<li>li 1</li>
</ul>
</div>
<div class="foo-2">foo 2</div>
</div>
&#13;
答案 4 :(得分:0)
尝试使用unwrap(); 示例:
$(".toon").unwrap();