嗯,问题标题不容易制定。也许编辑可以改进它?
情况:我有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”中查看工作代码,请参阅今天的专栏。
答案 0 :(得分:3)
不是最漂亮的代码,但试试这个:
$("table .markit").parent('tr').nextAll().find('td').css('border-left', '4px solid #CCD');
此代码查找所有.markit
元素,然后查找td
的所有同级tr
的{{1}}元素,并为其添加样式。我建议将该样式设为一个类,并使用markit
使维护更容易。您还可以使用addClass
包含原始addBack()
元素:
.markit
答案 1 :(得分:0)
尝试这样:
$(".markit").parent().parent().find('td').each(function() {
$(this).not('.markit').css('border-left','4px solid #CCD');
});
答案 2 :(得分:0)
$(".markit").each( function(obj) {
$(this).parent().nextAll().find('td').css('border-left','4px solid #CCD');
});