jQuery查找符合条件的元素

5

我遇到了一个棘手的问题,我想要给所有包含 <span> 或者 <div> 元素的 <td>所有父级 <tr> 添加一个 class。所以我有一个带有以下标记的表:

<table>
    <tr>
        <td>
        </td>
        <td>
        </td>
        <td>
            <div>
            </div>
        </td>
        <td>
        </td>
    </tr>
    <tr>
        <td>
            <span></span>
        </td>
        <td>
        </td>
        <td>
            <div>
            </div>
        </td>
        <td>
        </td>
    </tr>
</table>

我想要使用 jQuery 给所有包含 <span><div><td> 添加一个 class 属性...

我不知道如何循环遍历所有的 <td> 元素并检查它们的后代元素,然后给那些包含 <span><div> 的元素添加 class 属性... 这是否可行?

非常感谢您能提供帮助!这件事情让我发疯了!

1个回答

4
您可以使用.has()方法来检查tr是否有divspan作为后代元素:
$('table tr').has('div,span').addClass('someClass');

检查下面的代码片段:

请检查以下代码:

$('table tr').has('div,span').addClass('someClass');
.someClass {
  background-color: red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
  <tr>
    <td>td 1</td>
    <td>td 2</td>
    <td>
      <div>div</div>
    </td>
    <td>td 3</td>
  </tr>
  <tr>
    <td>td 1</td>
    <td>td 2</td>
    <td>td 3</td>
    <td>td 4</td>
  </tr>
  <tr>
    <td><span>span</span>
    </td>
    <td>td 1</td>
    <td>
      <div>div</div>
    </td>
    <td>td 2</td>
  </tr>

  <tr>
    <td>td 1</td>
    <td>td 2</td>
    <td>td 3</td>
    <td>td 4</td>
  </tr>

</table>


1
好东西,我甚至不知道这是jQuery的一个功能。 - keeehlan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接