jQuery:如何选择表中每行的最后N列?

时间:2011-04-29 21:45:20

标签: jquery jquery-selectors

我有一个包含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列以及所有后续行的所有列。

5 个答案:

答案 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>

感谢

http://css-tricks.com/useful-nth-child-recipies/

答案 2 :(得分:1)

$('table.listviewtable > tbody > tr td:gt(2)')

答案 3 :(得分:0)

最简单,最明显的选择器是:

$('tr').each(
function(){
    $(this).find('td:gt(2)').css('background-color','#ffa');
});

JS Fiddle

编辑因为我是个白痴,忽略了第一个建议的明显缺陷。顺便说一句,我假设正确标记,使用th作为标题行。但是,您可以将选择器修改为:

 $('tbody tr')

要解决此问题,如果您没有使用th元素。

答案 4 :(得分:0)

怎么样

$('td:gt(2)', 'table.litviewtable')

当然如果你在标题中使用th。