我有一个包含6列的表格。我想在每行的最后3列(不包括标题行)上运行一个函数。我有以下选择器正在运行:
$('table.listviewtable > tbody > tr:gt(0)').find('td:gt(2)')
.each(function () { runMyFunction($(this)); });
有没有办法在一个选择器中完成所有操作(即没有中间find
)?
更新
我试过
$('table.listviewtable > tbody > tr:gt(0) td:gt(2)')
和
$('table.listviewtable > tbody > tr:gt(0) > td:gt(2)')
但他们没有用。他们返回了第二行的第4,第5和第6列以及所有后续行的所有列。
答案 0 :(得分:8)
你走了:
$('table.listviewtable td:nth-child(n+4)')
现场演示: http://jsfiddle.net/simevidas/qJ3tP/1/
(我假设您正在为标题单元格使用TH元素。)
答案 1 :(得分:6)
获取TR的X最后一个TD的通用规则是:
$('#tbl tr td:nth-last-child(-n+X)');
// Example for the last 3 paragraphs in some section:
$('#my_section p:nth-last-child(-n+3)');
// It's exactly the same as:
$('#my_section p:nth-last-child(3-n)');
<!-- CSS -->
<style>
td {
border: solid 1px #999;
padding: 2px;
}
</style>
<!-- HTML -->
<p>Last 3 cells made gray using jQuery</p>
<table>
<tr>
<td>One</td>
<td>Two</td>
<td>Three</td>
<td>Four</td>
</tr>
</table>
<!-- JavaScript -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script>
$(document).ready(function() {
$('table tr td:nth-last-child(-n+3)').css('background', '#CCC');
});
</script>
答案 2 :(得分:1)
$('table.listviewtable > tbody > tr td:gt(2)')
答案 3 :(得分:0)
最简单,最明显的选择器是:
$('tr').each(
function(){
$(this).find('td:gt(2)').css('background-color','#ffa');
});
编辑因为我是个白痴,忽略了第一个建议的明显缺陷。顺便说一句,我假设正确标记,使用th
作为标题行。但是,您可以将选择器修改为:
$('tbody tr')
要解决此问题,如果您没有使用th
元素。
答案 4 :(得分:0)
怎么样
$('td:gt(2)', 'table.litviewtable')
当然如果你在标题中使用th。