使用jquery删除没有子节点的div

时间:2009-02-09 06:21:17

标签: jquery css

如何使用jquery删除没有子节点的SPECIFIC div(至少没有子节点不是空格)。 E.g。

<div id="outer">
    some content
    <div id="removeme"> 


    </div>
    some more content
</div>

想要使用id =“removeme”完全删除div。

6 个答案:

答案 0 :(得分:50)

删除id等于removeme的元素:

$("#removeme").remove();

要删除id等于removeme的元素,只有它为空:

$("#removeme:empty").remove();

删除所有空的<div>

$("div:empty").remove();

编辑:如果它不是空的,但有空格:

if($.trim($("#removeme").text()) == "") {
  $("#removeme").remove();
}

答案 1 :(得分:6)

我去了:

$('#outer > div').filter(function (index) { 
    return $(this).children().length < 1; 
}).remove();

这说:

  • 给我#outer
  • 的所有div孩子
  • 使用过滤器去掉任何有子节点的
  • 删除我们仍然选择的任何内容

可悲的是,如果它包含文本,这将删除div,这可能不是原始海报所希望的。纯文本不算作孩子。

答案 2 :(得分:2)

您也可以使用:

$( 'DIV:空')。除去();

http://docs.jquery.com/Selectors/empty

答案 3 :(得分:0)

我找不到忽略文本节点的选择器,所以这是我能想到的最快/最脏的代码片段。

$("#header").each(function() { 
    if($(this).children().length < 1) 
        $(this).remove() 
});

答案 4 :(得分:0)

我想你想要这个:

$('div#outer div:empty').remove();

它将删除div#outer node

中的所有空div

答案 5 :(得分:0)

如果有空的孩子,那么你可以指向孩子,然后删除父母, 这不要看空白时删除的空格

如此;如果li为空,则删除#removeme

if (!$("#tabs ul li").length) $('#tabs').remove();