jquery выбирает все элементы, кроме последнего, в группе

У меня есть таблица, которая выглядит так:

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

меняется только самая последняя ячейка. Как выбрать последний (или не последний) из каждой строки?


person Anthony    schedule 08.03.2010    source источник


Ответы (2)


Использовать это:

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

Он говорит, что каждый <td> не последний в этом конкретном <tr>

person Nick Craver    schedule 08.03.2010
comment
Я не уверен, что это сработает в моем случае, но, может быть, вы можете сказать мне наверняка. Я упростил свой html ради вопроса, но внутри каждого td есть другие элементы, такие как входы и метки. Будут ли last-child искать потомков или только детей первого уровня? - person Anthony; 08.03.2010
comment
Просто td, поскольку в селекторе нет места, это означает, что операторы : применяются к тому же элементу, в данном случае <td>. Итак, только дети первого уровня, если у вас есть таблица с вложенными td, измените селектор на tr>td:not(:last-child), это гарантирует, что только первый ребенок любой таблицы/tr, на которой вы находитесь. - person Nick Craver; 08.03.2010
comment
Спасибо @Ник! Это прояснило основную часть функциональности jQuery, которую я пишу!! - person dennismonsewicz; 18.06.2011

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

Переводится как: для каждого элемента в селекторе $('tr') выполните find() для всех td, которые не являются последними.
Новый результат сейчас около td, так что вы можете применить .css() по желанию.

person Alex Bagnolini    schedule 08.03.2010