jQuery选择每组元素除最后一个之外的所有元素

36
City Population
New York 8,336,817
Los Angeles 3,979,576
Chicago 2,693,976
<table>
   <tr>
      <td>one</td><td>two</td><td>three</td><td>last</td>
   </tr>
   <tr>
      <td>blue</td><td>red</td><td>green</td><td>last</td>
   </tr>
   <tr>
      <td>Monday</td><td>Tuesday</td><td>Wednesday</td><td>last</td>
   </tr>
</table>

我想要一个jQuery选择器,可以选择每个表格行中除了最后一个td以外的所有元素。我尝试过:

$("tr td:not(:last)").css("background-color","red");
  //changing color just as a test...

但是,实际上除了每行最后一个单元格之外的所有单元格都将被更改,选择的是表格中除了最后一个单元格以外的所有单元格。同样地,如果我将其更改为:

$("tr td:last").css("background-color","red");

唯一发生变化的是最后一个单元格。我如何选择每行的最后一个(或非最后一个)?

2个回答

60
使用这个:
$('tr td:not(:last-child)').css('background-color', 'red');

这句话是在说每个不是该特定<tr>中的最后一个<td>


我不确定这在我的情况下是否有效,但也许你可以确定一下。为了提问方便,我简化了我的HTML代码,但是每个td元素内部都有其他元素,例如输入框和标签。last-child选择器会查找后代元素吗?还是只查找第一层子元素? - Anthony
4
由于选择器中没有空格,只需对该元素应用 : 运算符即可应用于同一元素,即 <td> 元素。因此,仅适用于第一级子元素。如果您有一个包含嵌套的 <td> 的表格,则将选择器更改为 tr>td:not(:last-child),这将确保仅适用于所在表格/行的第一个子元素。 - Nick Craver
谢谢 @Nick!这解决了我正在编写的一个重要的jQuery功能模块!! - dennismonsewicz

16
$('tr').find('td:not(:last)').css('background-color', 'red');

翻译为:针对在选择器 $('tr') 中的每个元素,进行find()来查找不是最后一个的所有 td
现在的结果是关于td的,所以您可以根据需要应用.css()


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接