代码之家  ›  专栏  ›  技术社区  ›  priMo-ex3m

使用jQuery删除所有没有特定子级的元素

  •  -2
  • priMo-ex3m  · 技术社区  · 8 年前

    我有一组项目,如:

    <div class="owl-item cloned">
     <div class="item"> some other  tags, text, content in item </div>
    </div>
    
    <div class="owl-item cloned">
    </div>
    
    <div class="owl-item cloned">
     <div class="item"> some other  tags, text, content in item </div>
    </div>
    
    <div class="owl-item cloned">
    </div>
    

    所以,我有一位家长 owl-item 我想检查此元素是否为空(没有任何其他子元素),如果是,请删除此元素。如果没有,请跳过。

    所以,在执行我的小脚本之后,我只想:

    <div class="owl-item cloned">
     <div class="item"> some other  tags, text, content in item </div>
    </div>
        <div class="owl-item cloned">
     <div class="item"> some other  tags, text, content in item </div>
    </div>
    
    1 回复  |  直到 8 年前
        1
  •  1
  •   Rory McCrossan Hsm Sharique Hasan    8 年前

    使用 :empty 选择器,然后调用 remove() 在他们身上:

    $('.owl-item.cloned:empty').remove();
    .owl-item {
      border: 1px solid #C00;
      min-height: 1em;
      margin: 5px;
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <div class="owl-item cloned">
      <div class="item"> some other tags, text, content in item </div>
    </div>
    <div class="owl-item cloned"></div>
    <div class="owl-item cloned">
      <div class="item"> some other tags, text, content in item </div>
    </div>
    <div class="owl-item cloned"></div>

    请注意,要使其工作,元素中不能有任何空白文本节点。

    如果确实有一些空格,那么可以使用 filter() 而是:

    $('.owl-item.cloned').filter(function() {
      return $(this).children().length === 0;
    }).remove();
    .owl项目{
    边框:1px实心#C00;
    最小高度:1em;
    保证金:5px;
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <div class="owl-item cloned">
      <div class="item"> some other tags, text, content in item </div>
    </div>
    <div class="owl-item cloned">
    </div>
    <div class="owl-item cloned">
      <div class="item"> some other tags, text, content in item </div>
    </div>
    <div class="owl-item cloned">
    </div>

    也就是说,更好的解决方案是首先不克隆空元素,假设这就是 cloned