如何从内部元素中选择父元素并通过.each()将样式应用于此父元素的其他内部元素?

时间:2013-10-08 09:28:22

标签: jquery

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

情况:我有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在相同的表中更改 .markit下面的所有单元格的边框颜色,这将是<td>1b</td>和{{ 1}}和<td>1c</td>

我试过了:

<td>4b</td>

但它正在改变所有 td

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

可以在此日历“Ferienkalendar”中查看工作代码,请参阅今天的专栏。

3 个答案:

答案 0 :(得分:3)

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

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

Example fiddle

此代码查找所有.markit元素,然后查找td的所有同级tr的{​​{1}}元素,并为其添加样式。我建议将该样式设为一个类,并使用markit使维护更容易。您还可以使用addClass包含原始addBack()元素:

.markit

Example including original markit element

答案 1 :(得分:0)

尝试这样:

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

JsFiddle

答案 2 :(得分:0)

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