我有一张这样的表:
<table>
<tr><td>Not This</td><td rowspan="3">This</td></tr>
<tr><td>Not This</td></tr>
<tr><td>Not This</td></tr>
<tr><td>Not This</td><td>This</td></tr>
</table>
如何在每行中选择最右边的单元格(包含“This”),以便设置边框颜色?
我尝试过类似的事情:
table.find('tr > td:last-child').addClass('someclass');
但是,即使它们不是最右边的单元格,它也会选择第2行和第3行的最后一个单元格。
我没有在桌子上使用边框折叠,并且宁愿避免使用它。
答案 0 :(得分:3)
这个需要一些诡计:
$(function() {
$('td:last-child[rowspan]').each(function() {
$(this).parent().nextAll().slice(0,$(this).attr('rowspan')-1).addClass('skip');
});
$('tr:not(.skip) > td:last-child').addClass('someclass');
$('.skip').removeClass('skip');
});
因此,您首先要查找最后一个子节点并具有rowspan属性的任何td。迭代这些,在每个行之后计算行,并为每个行添加一个类以“跳过”它们。然后将类添加到不在“跳过”行的最后子单元格中,最后删除跳过类。
答案 1 :(得分:1)
你可以选择这样的东西,如果你有很多行,可能是一个昂贵的查找:
$('table tr').each(function(){
if( $('td',this).size() > 1 ){
$(this).find('td:last-child').addClass('someclass');
};
});
你也可以这样做,取自Spolto的例子:
$('table tr').each(function(){
$('td:gt(0)',this).addClass('someclass');
});
答案 2 :(得分:1)
你应该可以像这样跳过第一个<td>
:
$("table tr td:gt(0)").addClass('someclass');
答案 3 :(得分:0)
这应该有效:
$("TD ~ TD:last-child").addClass('someclass');
设置表格本身的边框也可能有效。