使用选择器来定位空div以进行删除

时间:2012-12-14 16:38:56

标签: jquery css-selectors

我正在尝试删除div,如果它是空的。我有多个具有相同类的div,我想删除它,除非它有文本或图像。我希望它忽略空格。我正在使用这个:

    if($.trim($(".C1").html()) == "") {
  $(".C1").remove();
}

然后我意识到我需要为每个要删除的div添加一个唯一的id或类,所以我发现这有效:

    if($.trim($(".C1").html()) == "") {
  $(".C1").remove();
}

    if($.trim($(".C2").html()) == "") {
  $(".C2").remove();
}

有没有办法在一个脚本中执行此操作?我试过这样做:.C1,.C2,.C3等,但只有在所有div都为空时才有效。

4 个答案:

答案 0 :(得分:3)

$(".C1").filter(':empty').remove()

$(".C2").filter(function() {
    return !this.innerHTML.trim();
}).remove();

答案 1 :(得分:1)

您可以使用jQuery的:empty选择器。

// Removes every "empty" element.
$(":empty").remove();

这是一个具体的例子。

$(function() {
  $(".foo, .bar, .baz")
    .filter(function(_, el) {
      return $(el).is(":empty");
    })
    .remove();

  console.log("Empty <div /> has been removed:", $(".foo").length == 0);
});
<div class="foo"></div>
<div class="bar">Not empty</div>
<div class="baz">
  <img src="/favicon.ico" />
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

答案 2 :(得分:1)

$('.C1, .C2').filter(function(){
     return !$.trim(this.innerHTML)
}).remove()

答案 3 :(得分:0)

另一种选择是检查孩子的数量。

$(document).ready(function(){
    $('.C1').each(function(){
        if($(this).children().length == 0){
           $(this).remove();     
        }
    });
});

JSFiddle Link:http://jsfiddle.net/7udv7/1/