循环遍历每行中除第一行之外的所有单元格,如果所有单元格都具有特定类,则隐藏行

时间:2017-06-27 15:05:26

标签: jquery

我有以下jQuery,它就像一个魅力:

$('#planCompareTable > tbody > tr').each(function() {
    if ($(this).find('td:nth-child(2)').hasClass('noValue') && $(this).find('td:nth-child(3)').hasClass('noValue')) {
        $(this).hide();
    }
}

我正在查看特定的表,循环遍历每一行,检查该行中的单元格2和3是否为noValue,并隐藏该行(如果存在)。大。

我现在的问题是,我不知道这个表会有多少列,但是我需要继续检查该类的每一行中的每一列之后的每一列,如果&只有当第一个以外的所有细胞都有这个类时。

我尝试将第二行更新为if ($(this).find('td:not(:first)').each(hasClass('noValue'))),但如果找到类noValue的任何单元格,它将隐藏整行,而不管该行中其他单元格的状态如何。< / p>

我的假设是我需要在这里使用嵌套的each()函数,但我不确定如何执行此操作。

1 个答案:

答案 0 :(得分:1)

您可以计算noValue个单元格的数量,如果它小于总单元格数量,则隐藏该行。

&#13;
&#13;
$('#planCompareTable > tbody > tr').each(function(){
   var $row = $(this);
   var allNoValue = ($row.find("td.noValue").length == ($row.find("td").length-1));
   if(allNoValue) $row.hide();
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table id="planCompareTable">
  <tbody>
    <tr>
      <td>row1</td>
      <td class="noValue"></td>
      <td class="noValue"></td>
    </tr>
    <tr>
      <td>row2</td>
      <td class="noValue"></td>
      <td class=""></td>
    </tr>
  </tbody>
</table>
&#13;
&#13;
&#13;