如果类中没有子元素,则赋予父类

Give parent class if there is no child elements with classes

本文关键字:父类 元素 如果      更新时间:2023-09-30

我有一个元素列表,如果父tr元素中的子元素没有分配类,我想给它一个类。这在jQuery或vanillaJS中可能吗?

<tr>
 <td class="unfoldedlabel" colspan="6"><a>Accessories</a></td>
</tr>
<tr>
 <td class="foldedlabel" colspan="6"><a>Accessories</a></td>
</tr>
<tr>
 <td><a>Accessories</a></td>
</tr>

您可以使用:has():not()

$('tr:has(>:not(td[class]))').addClass('class')
.class {
  color: red
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<table>
  <tr>
    <td class="unfoldedlabel" colspan="6"><a>Accessories</a>
    </td>
  </tr>
  <tr>
    <td class="foldedlabel" colspan="6"><a>Accessories</a>
    </td>
  </tr>
  <tr>
    <td><a>Accessories</a>
    </td>
  </tr>
</table>

试试这个:你可以迭代tr s,检查它是否有特定类的子级,如果没有,则向它添加类。

$('tr').each(function(){
  if($(this).children('.childClass').length ==0)
    $(this).addClass('parentClass');
});

您可以使用has()not()选择器

$('tr').not(':has(td[class])').addClass('no');
tr.no {
  color: red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
  <tr>
    <td class="unfoldedlabel" colspan="6"><a>Accessories</a>
    </td>
  </tr>
  <tr>
    <td class="foldedlabel" colspan="6"><a>Accessories</a>
    </td>
  </tr>
  <tr>
    <td><a>Accessories</a>
    </td>
  </tr>
</table>