简体   繁体   中英

how to remove empty div

 $('.custompsps').each(function(i, obj) { var $this = $(this); var $items = $this.find(".custom_blank_wrapper") $.each($items, function(n, e) { ($items).(".custom_blank"): is blank or not }); });

I want to remove empty div of custompsps div which has all div empty how can i remove it custompsps which has empty tag and filled tag should not be affected i think i need to run two loops for it but i have do idea how to achieve it i know is is simple I am stuck her so can someone help me with this issue

 <div class="custompsps"> <div class="ProductItem"> <div class="custom_blank_wrapper"> <div class="custom_blank"></div> <div class="custom_blank">new</div> <div class="custom_blank">new</div> </div> </div> <div class="ProductItem"> <div class="ProductItem"> <div class="custom_blank_wrapper"> <div class="custom_blank"></div> <div class="custom_blank">new</div> <div class="custom_blank">new</div> </div> </div> </div> <div class="ProductItem"> <div class="ProductItem"> <div class="custom_blank_wrapper"> <div class="custom_blank"></div> <div class="custom_blank">new</div> <div class="custom_blank">new</div> </div> </div> </div> <div class="ProductItem"> <div class="ProductItem"> <div class="custom_blank_wrapper"> <div class="custom_blank"></div> <div class="custom_blank"></div> <div class="custom_blank"></div> </div> </div> </div> </div> <div class="custompsps"> <div class="ProductItem"> <div class="custom_blank_wrapper"> <div class="custom_blank"></div> <div class="custom_blank"></div> <div class="custom_blank"></div> </div> </div> <div class="ProductItem"> <div class="ProductItem"> <div class="custom_blank_wrapper"> <div class="custom_blank"></div> <div class="custom_blank"></div> <div class="custom_blank"></div> </div> </div> </div> <div class="ProductItem"> <div class="ProductItem"> <div class="custom_blank_wrapper"> <div class="custom_blank"></div> <div class="custom_blank"></div> <div class="custom_blank"></div> </div> </div> </div> <div class="ProductItem"> <div class="ProductItem"> <div class="custom_blank_wrapper"> <div class="custom_blank"></div> <div class="custom_blank"></div> <div class="custom_blank"></div> </div> </div> </div> </div>

Maybe this can help you? https://css-tricks.com/almanac/selectors/e/empty/

span:empty {
  display: none;
}

If you can write code, it is better to add an additional class like empty and set style.

.empty { display: none; }

Use this following code which will remove all empty div under 'custompsps' class

$(document).ready(function(){
 var divList =$(".custompsps").find('div');
 for( i=0; i<=divList.length; i++)
 {
    if($(divList[i]).is(':empty')){
      $(divList[i]).remove();
    }
 }
 
});
  $('.custompsps').each(function(i, obj)  {
    var $this = $(this);
    var $items = $this.find(".custom_blank_wrapper");
    var found_tag = false;
    $.each($items, function(n, e)
    {
      if( !$items.children().text().trim() == "" ) {

      }else{
        found_tag = true;
        $items.children().remove();
      }
    });      

  });

Create a special selector (emptyChildren)

You can create a special selector for this:

$.extend(jQuery.expr[':'], {  
  emptyChildren: function (el, index, selector) {
    var childClass = selector[3];
    var element = $(el);
    var areAllChildrenEmpty = true;
    element.find(childClass).each(function(){
        if(!$(this).is(":empty")) {
            areAllChildrenEmpty = false;
            return;
        }
    });
    return areAllChildrenEmpty;
  }
});

Usage

Now you can use the selector as follows:

$(".custom_blank_wrapper:emptyChildren(.custom_blank)").remove();

Complete example

<script
  src="https://code.jquery.com/jquery-3.6.0.min.js"
  integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4="
  crossorigin="anonymous"></script>

<div class="custompsps">
    <div class="ProductItem">
        <div class="custom_blank_wrapper">
            <div class="custom_blank"></div>
            <div class="custom_blank">new</div>
            <div class="custom_blank">new</div>
        </div>
    </div>
    <div class="ProductItem">
        <div class="ProductItem">
            <div class="custom_blank_wrapper">
                <div class="custom_blank"></div>
                <div class="custom_blank">new</div>
                <div class="custom_blank">new</div>
            </div>
        </div>
    </div>
    <div class="ProductItem">
        <div class="ProductItem">
            <div class="custom_blank_wrapper">
                <div class="custom_blank"></div>
                <div class="custom_blank">new</div>
                <div class="custom_blank">new</div>
            </div>
        </div>
    </div>
    <div class="ProductItem">
        <div class="ProductItem">
            <div class="custom_blank_wrapper">
                <div class="custom_blank"></div>
                <div class="custom_blank"></div>
                <div class="custom_blank"></div>
            </div>
        </div>
    </div>
</div>
<div class="custompsps">
    <div class="ProductItem">
        <div class="custom_blank_wrapper">
            <div class="custom_blank"></div>
            <div class="custom_blank"></div>
            <div class="custom_blank"></div>
        </div>
    </div>
    <div class="ProductItem">
        <div class="ProductItem">
            <div class="custom_blank_wrapper">
                <div class="custom_blank"></div>
                <div class="custom_blank"></div>
                <div class="custom_blank"></div>
            </div>
        </div>
    </div>
    <div class="ProductItem">
        <div class="ProductItem">
            <div class="custom_blank_wrapper">
                <div class="custom_blank"></div>
                <div class="custom_blank"></div>
                <div class="custom_blank"></div>
            </div>
        </div>
    </div>
    <div class="ProductItem">
        <div class="ProductItem">
            <div class="custom_blank_wrapper">
                <div class="custom_blank"></div>
                <div class="custom_blank"></div>
                <div class="custom_blank"></div>
            </div>
        </div>
    </div>
</div>

<script>
$.extend(jQuery.expr[':'], {  
  emptyChildren: function (el, index, selector) {
    var childClass = selector[3];
    var element = $(el);
    var areAllChildrenEmpty = true;
    element.find(childClass).each(function(){
        if(!$(this).is(":empty")) {
            areAllChildrenEmpty = false;
            return;
        }
    });
    return areAllChildrenEmpty;
  }
});

$(".custom_blank_wrapper:emptyChildren(.custom_blank)").remove();
</script>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM