1

好吧,问题标题并不容易制定。也许编辑可以改进它?

情况:我有 4 个具有相同类名的表:

<table class="tb">
  <tr><td class="markit">1a</td></tr>
  <tr><td>1b</td></tr>
  <tr><td>1c</td></tr>
</table>
<table class="tb">
  <tr><td>2a</td></tr>
  <tr><td>2b</td></tr>
</table>
<table class="tb">
  <tr><td>3a</td></tr>
  <tr><td>3b</td></tr>
</table>
<table class="tb">
  <tr><td class="markit">4a</td></tr>
  <tr><td>4b</td></tr>
</table>

我希望 jquery 更改同一个表所有单元格 的边框颜色,这将是and和。.markit<td>1b</td><td>1c</td><td>4b</td>

我试过:

$(".markit").each( function() {
  $('td:nth-child('+($(this).index()+1)+')').css('border-left','4px solid #CCD');
});

但它正在改变所有td

我需要告诉 jquery 只使用当前父级的 tds,但我不知道如何设置选择器。

工作代码可以在这个日历“ Ferienkalendar ”看到今天的专栏。

4

3 回答 3

3

不是最漂亮的代码,但试试这个:

$("table .markit").parent('tr').nextAll().find('td').css('border-left', '4px solid #CCD');

示例小提琴

此代码查找所有.markit元素,然后查找 的所有td兄弟元素并为其添加样式。我建议将样式设置为一个类,并使用它使将来的维护更容易。您还可以使用包含原始元素:trmarkitaddClassaddBack().markit

$("table .markit").parent('tr').nextAll().addBack().find('td').addClass('after-markit');

包含原始 markit 元素的示例

于 2013-10-08T09:31:47.347 回答
0

试试这样:

$(".markit").parent().parent().find('td').each(function() {
    $(this).not('.markit').css('border-left','4px solid #CCD');
});

提琴手

于 2013-10-08T09:40:06.983 回答
0
$(".markit").each( function(obj) {
    $(this).parent().nextAll().find('td').css('border-left','4px solid #CCD');
});
于 2013-10-08T09:48:08.997 回答