没有内部元素时删除类

时间:2016-06-16 09:51:53

标签: jquery

我有以下课程:

<div class='prod-item'>
</div>

我可能在DOM中有这个类的多个版本。是否可以遍历每个,并删除没有内部HTML元素的那些?

例如,这可以保留:

<div class='prod-item'>
<p>Pussy</p>
</div>

这应该是:

<div class='prod-item'>
</div>

我有以下不完整的功能,但我不确定如何检查是否存在内部元素:

$('li[class="prod-item"]').each(function() {
    if(){
     this.removeAttribute('class');
   }
});

6 个答案:

答案 0 :(得分:1)

快速变种:

   $('li[class="prod-item"]').each(function() {
        if($(this).children().length == 0){
         this.removeAttribute('class');
       }
    });

答案 1 :(得分:1)

使用html()语法:

$('li[class="prod-item"]').each(function() {
    if($(this).html().length === 0){
     this.removeAttribute('class');
   }
});

答案 2 :(得分:1)

使用 filter() 方法过滤掉所有空div,然后使用 removeClass() 方法删除class。 html内容可以使用 html() 方法,并使用 $.trim() 方法删除尾随和前导空格后检查字符串的长度。

&#13;
&#13;
$('div.prod-item').filter(function() {
  return !$.trim($(this).html()).length;
}).removeClass('prod-item');
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class='prod-item'>
</div>
<div class='prod-item'>
  <p>Pussy</p>
</div>

<div class='prod-item'>
  <p>Wagon</p>
</div>
&#13;
&#13;
&#13;

答案 3 :(得分:1)

您使用了LI元素而不是div ...

$('.prod-item').each(function() {
   if ($.trim($(this).html())=='') $(this).removeClass('class'); 
});

答案 4 :(得分:1)

您可以使用

1)empty选择器:

$('li[class="prod-item"]:empty').removeClass('prod-item');

2)或not has选择器:

$('li[class="prod-item"]:not(:has(*))').removeClass('prod-item');

答案 5 :(得分:1)

$(".prod-item").each(function() {
   if($(this).children().length == 0) {
     $(this).remove();
   }
});