2010-03-08 64 views
33

除了最後所有元素我有一個表,看起來像:的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"); 

唯一發生變化的是最後一個單元格。我如何選擇每行的最後(或最後)?

回答

55

使用此:

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

它說每個<td>這不是上次在那個特定<tr>

+0

我不知道這會在我的情況下工作,但也許你能告訴我是肯定的。爲了解決問題,我簡化了html,但每個td都有其他元素,例如輸入和標籤。 「最後一個孩子」是否會尋找後代,還是僅僅是一級孩子? – Anthony 2010-03-08 12:31:51

+3

只是td,因爲在選擇器中沒有空格意味着':'運算符適用於相同的元素,在這種情況下'​​'。因此,只有一級chidren,如果你有一個嵌套td的表,將選擇器改爲'tr> td:not(:last-child)',這將確保只有你所在的任何表/ tr的第一個孩子。 – 2010-03-08 12:41:59

+0

謝謝@尼克!這清除了我寫的一個主要的jQuery功能! – dennismonsewicz 2011-06-17 21:38:48

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

翻譯爲:在$('tr')選擇的每個元素,做所有td S中的不持續find()
新的結果是關於td現在,所以你可以申請.css()如想。