javascript - 将一个类添加到所有下一个元素,直到有类的子元素

标签 javascript jquery html css

我正在尝试使用 jQuery 添加一个“bg-info”类,以在奇数 tr 之后的所有 tr 中添加一个子 > 子类“test”。 “bg-info”类应该在看到带有子 > 子类“test”的 tr 时停止应用,然后在看到下一个带有子 > 子类“test”的奇数 tr 时继续应用。金额是动态的,因此它不能依赖于特定数量的 tr。我尝试了很多组合,但似乎无法使其正常工作。请参阅 JSFiddle。提前致谢:)

JSFiddle

https://jsfiddle.net/vrpuahue/4/

HTML

<table>
  <thead>
    <tr>
      <th>Test</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>
        <div class="test">Test1</div>
      </td>
    </tr>
    <tr>
      <td>Do Not Highlight</td>
    </tr>
    <tr>
      <td>Do Not Highlight</td>
    </tr>
    <tr>
      <td>Do Not Highlight</td>
    </tr>
    <tr>
      <td>
        <div class="test">Test2</div>
      </td>
    </tr>
    <tr>
      <td>Highlight</td>
    </tr>
    <tr>
      <td>Highlight</td>
    </tr>
    <tr>
      <td>Highlight</td>
    </tr>
    <tr>
      <td>
        <div class="test">Test3</div>
      </td>
    </tr>
    <tr>
      <td>Do Not Highlight</td>
    </tr>
    <tr>
      <td>Do Not Highlight</td>
    </tr>
    <tr>
      <td>Do Not Highlight</td>
    </tr>
    <tr>
      <td>
        <div class="test">Test4</div>
      </td>
    </tr>
    <tr>
      <td>Highlight</td>
    </tr>
    <tr>
      <td>Highlight</td>
    </tr>
    <tr>
      <td>Highlight</td>
    </tr>
    <tr>
      <td>
        <div class="test">Test5</div>
      </td>
    </tr>
    <tr>
      <td>Do Not Highlight</td>
    </tr>
    <tr>
      <td>Do Not Highlight</td>
    </tr>
    <tr>
      <td>Do Not Highlight</td>
    </tr>
  </tbody>
</table>

CSS

.bg-info {
  background: grey;
}

JS

$('tbody tr td .test:odd').parent().parent().addClass('bg-info');

最佳答案

使用 nextUntil方法可以在这种情况下帮助您。

我为所有偶数和奇数 parent 添加一个类,然后突出显示所需的特定元素。

demo

$('.test:odd').parents('tr').addClass('odd');
$('.test:even').parents('tr').addClass('even');
$('.odd').nextUntil('.even').addClass('highlight');
.highlight {
  background: yellow;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<table>
  <thead>
<tr>
  <th>Test</th>
</tr>
  </thead>
  <tbody>
<tr>
  <td>
    <div class="test">Test1</div>
  </td>
</tr>
<tr>
  <td>Do Not Highlight</td>
</tr>
<tr>
  <td>Do Not Highlight</td>
</tr>
<tr>
  <td>Do Not Highlight</td>
</tr>
<tr>
  <td>
    <div class="test">Test2</div>
  </td>
</tr>
<tr>
  <td>Highlight</td>
</tr>
<tr>
  <td>Highlight</td>
</tr>
<tr>
  <td>Highlight</td>
</tr>
<tr>
  <td>
    <div class="test">Test3</div>
  </td>
</tr>
<tr>
  <td>Do Not Highlight</td>
</tr>
<tr>
  <td>Do Not Highlight</td>
</tr>
<tr>
  <td>Do Not Highlight</td>
</tr>
<tr>
  <td>
    <div class="test">Test4</div>
  </td>
</tr>
<tr>
  <td>Highlight</td>
</tr>
<tr>
  <td>Highlight</td>
</tr>
<tr>
  <td>Highlight</td>
</tr>
<tr>
  <td>
    <div class="test">Test5</div>
  </td>
</tr>
<tr>
  <td>Do Not Highlight</td>
</tr>
<tr>
  <td>Do Not Highlight</td>
</tr>
<tr>
  <td>Do Not Highlight</td>
</tr>
  </tbody>
</table>

关于javascript - 将一个类添加到所有下一个元素,直到有类的子元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35901563/

相关文章:

javascript - 通过常量创建纯组件 - javascript 还是通过 React?

javascript - Google Cloud 上的虚拟 Ubuntu VM 无法通过 nodejs、外部 ip 连接

javascript - 如何为目录中的每个文件创建元素 | Javascript | NodeJS |埃杰斯

javascript - 如何使用 jQuery 将每个单词的第一个字母大写

javascript - 我在使用流畅的布局时遇到问题

html - Bootstrap 3 偏移忽略大小

javascript - 数据属性未正确呈现

javascript - 这个 Angular-ui typeahead 代码有什么问题?

php - 图片上传到文件夹中。但在浏览器中无法查看

html - 对齐页眉和 Logo