2011-11-28 10 views
30

Czy można wybrać ostatnie dziecko, które NIE ma atrybutu klasy? takie jak:Łączenie: ostatnie dziecko z selektorem: nie (.class) w CSS

<tr> ... </tr> 
<tr> ... </tr> 
<tr> ... </tr> 
<tr class="table_vert_controls"> ... </tr> 

Chcę wybrać trzeci wiersz, w tym przypadku.

próbowałem następujące, które nie działa:

tr:not(.table_vert_controls):last-child 

góry dziękuję.

+3

myślę, że to jest to, czego oczekują. Zobacz ** BoltClock ** odpowiedź ** [CSS3: nth-child (nieparzyste) z selektorem] (http://stackoverflow.com/a/5546296/500725) ** –

+0

Dzięki za podpowiedź Siva! Nie było to dokładnie to, czego potrzebowałem, ale skończyło się na użyciu n-tego ostatniego dziecka. Ponieważ wiersz z klasą zawsze jest ostatni, użyłem n-tego-ostatniego-dziecka, aby wybrać żądany wiersz. – dcastro

+0

@dcastro: Jak w "tr: ​​nth-last-child (2)"? To też działa :) – BoltClock

Odpowiedz

25

Nie z selektorów CSS sam, nie, jak :last-child specjalnie patrzy na ostatnie dziecko, i nie jest podobna :last-of-class Pseudo-klasa. Zobacz moją odpowiedź na this related question.

Do końca 2015 r. Rozpoczęły się powoli wdrażanie rozszerzeń Selectors 4 do wersji :nth-child() i :nth-last-child(), które umożliwiają przekazywanie arbitralnego selektora jako argumentu (więcej na ten temat również w aktualizacji powiązanej odpowiedzi). Będziesz wtedy mógł napisać następujące:

tr:nth-last-child(1 of :not(.table_vert_controls)) 

Choć implementacje mają od niedawna do wysyłki, to nadal będzie trwać co najmniej kilka miesięcy, jeśli nie kolejny rok do tego, aby być powszechnie obsługiwane. W międzyczasie, będziesz musiał użyć czegoś innego, jak dodatkową klasę tuż przed danej klasy lub selektor jQuery:

$('tr:not(.table_vert_controls):last') 
+0

': last-of-type' brzmi wystarczająco blisko, czy to nie działa? – Tomalak

+5

@ Tomalak: Nie, ponieważ ': last-of-type' nie ma notacji funkcjonalnej i patrzy tylko na typ elementu (w tym przypadku' tr'). – BoltClock

+0

Dzięki. Już to usunąłem. (Twój kod jQuery był pierwszą wersją mojej odpowiedzi, dopóki nie zauważyłem, że to nie dotyczy przede wszystkim jQuery ...) – Tomalak