2010-03-08 5 views
33

Ich habe eine Tabelle, die wie folgt aussieht:jquery alle Elemente mit Ausnahme der letzten pro Gruppe auswählen

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

Was ich will, ein jQuery-Selektor ist, dass alle, aber die letzten td jede Tabellenzeile wählen werden. Ich habe versucht:

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

Aber statt allen Zellen aber die letzten in jeder Zeile geändert wird, alle Zellen, aber die allerletzte in der Tabelle ausgewählt werden. In ähnlicher Weise, wenn ich es zu ändern:

der einzige, der ändert, ist die allerletzte Zelle. Wie wähle ich die letzte (oder nicht letzte) jeder Zeile?

Antwort

55

Verwendung:

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

Es ist jedes <td> sagen, dass nicht die letzte in diesem speziellen <tr>

+0

ist Ich bin nicht sicher, dass dies in meinem Fall funktionieren wird, aber vielleicht können Sie mir sagen, sicher. Ich habe meine HTML für die Frage vereinfacht, aber jede td hat andere Elemente wie Eingänge und Beschriftungen. Wird das 'last-child' auch nach Nachkommen suchen, oder nur nach den Kindern der ersten Stufe? – Anthony

+3

Nur die td, da es keinen Platz im Selektor gibt bedeutet das ':' Operatoren auf das gleiche Element, in diesem Fall die ''. Wenn Sie also eine Tabelle mit verschachtelten Tds haben, ändern Sie den Selektor zu 'tr> td: not (: last-child)', dies stellt nur das erste Kind der Tabelle/tr sicher, auf der Sie gerade sind . –

+0

Danke @Nick! Dies räumte ein großes Stück jQuery-Funktionalität auf, die ich schreibe !! – dennismonsewicz

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

Verschiebt an: für jedes Element in $('tr') Wähler, für alle td s find() tun, die nicht dauern.
Neues Ergebnis ist etwa td s jetzt, so können Sie .css() wie gewünscht anwenden. diese