【问题标题】:jquery selecting all elements except the last per groupjquery选择除每组最后一个元素之外的所有元素
【发布时间】:2011-01-24 23:01:04
【问题描述】:

我有一个看起来像这样的表:

<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");

唯一改变的是最后一个单元格。如何选择每行的最后一个(或不是最后一个)?

【问题讨论】:

    标签: jquery jquery-selectors


    【解决方案1】:
    $('tr').find('td:not(:last)').css('background-color', 'red');
    

    转换为:对于$('tr') 选择器中的每个元素,对所有不是最后一个的tds 执行find()
    新结果现在大约是tds,所以你可以根据需要申请.css()

    【讨论】:

      【解决方案2】:

      使用这个:

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

      这是说每个&lt;td&gt; 不是那个特定&lt;tr&gt; 中的最后一个

      【讨论】:

      • 我不确定这是否适用于我的情况,但也许您可以确定地告诉我。为了这个问题,我简化了我的 html,但每个 td 内部都有其他元素,例如输入和标签。 last-child 也会寻找后代,还是只寻找一级子代?
      • 只是 td,因为选择器中没有空格意味着 : 运算符适用于同一元素,在本例中为 &lt;td&gt;。所以只是一级孩子,如果你有一个带有嵌套 td 的表,请将选择器更改为 tr&gt;td:not(:last-child),这确保只有你所在的任何 table/tr 的第一个孩子。
      • 谢谢@Nick!这清除了我正在编写的一个主要的 jQuery 功能!
      猜你喜欢
      • 1970-01-01
      • 2011-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-05
      • 1970-01-01
      相关资源
      最近更新 更多