我该如何使用jQuery删除一个没有子元素(至少没有非空白子元素)的特定div?例如:
<div id="outer">
some content
<div id="removeme">
</div>
some more content
</div>
想要完全删除id为"removeme"的div。要删除 id
等于 removeme
的元素:
$("#removeme").remove();
只有在其为空时,才删除具有等于removeme
的id
元素:
$("#removeme:empty").remove();
要删除所有空的 <div>
标签:
$("div:empty").remove();
编辑:如果它不是空的,但有空白字符:
if($.trim($("#removeme").text()) == "") {
$("#removeme").remove();
}
我选择了:
$('#outer > div').filter(function (index) {
return $(this).children().length < 1;
}).remove();
这段话的意思是:
不幸的是,如果 div 包含文本,这将会删除它,这可能不是原始帖子作者想要的。纯文本不算作子节点。
$('div:empty').remove();
如果父元素没有特定类的子元素,则删除父元素
$('.parentClass:not(:has(.childClass))').remove();
我想你需要这个:
$('div#outer div:empty').remove();
它将删除div#outer节点内的所有空div
如果一个元素是空的且拥有子元素,你可以指向其子元素并移除其父元素。这个过程不考虑空格,只要元素为空就会被移除。
例如:如果li为空,则会移除#removeme元素。
if (!$("#tabs ul li").length) $('#tabs').remove();
我找不到一个可以忽略文本节点的选择器,所以这是我能想到的最快/最脏的代码片段。
$("#header").each(function() {
if($(this).children().length < 1)
$(this).remove()
});