2011-11-28 25 views
30

¿Es posible elegir el último hijo que NO tiene un atributo de clase? Como tales :Combinación: último-hijo con: selector no (.class) en CSS

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

Quiero seleccionar la tercera fila, en este caso.

He intentado lo siguiente, que no funcionaba:

tr:not(.table_vert_controls):last-child 

Gracias de antemano.

+3

Creo que esto es lo que estás esperando. Consulte ** Respuesta de BoltClock ** ** [CSS3: n-child (impar) con un selector] (http://stackoverflow.com/a/5546296/500725) ** –

+0

¡Gracias por la pista Siva! Eso no era exactamente lo que necesitaba, pero terminé usando nth-last-child. Como la fila con la clase siempre es la última, utilicé nth-last-child para seleccionar la fila que necesitaba. – dcastro

+0

@ dcastro: como en 'tr: nth-last-child (2)'? Eso también funciona :) – BoltClock

Respuesta

25
No

con selectores CSS solo, no, como se ve :last-child específicamente a el último niño, y no es una :last-of-class pseudo-clase similar. Ver mi respuesta al this related question.

A finales de 2015, las implementaciones han comenzado a gotear lentamente en Selectores de extensión a las 4 de :nth-child() y :nth-last-child() que le permiten pasar un selector arbitraria como un argumento (más sobre esto también en una actualización de la respuesta relacionado). A continuación, será capaz de escribir lo siguiente:

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

Aunque las implementaciones recientemente han comenzado a enviar, que aún llevará al menos unos cuantos meses más, si no un año más para que esto sea ampliamente apoyada. Mientras tanto, tendrás que usar otra cosa, como una clase extra justo antes de la clase en cuestión, o un selector jQuery:

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

': last-of-type' suena lo suficientemente cerca, ¿no funcionaría? – Tomalak

+5

@Tomalak: No, ya que ': last-of-type' no tiene una notación funcional, y solo mira el tipo de elemento (en este caso,' tr'). – BoltClock

+0

Gracias. Ya lo he borrado. (Tu código jQuery fue la primera versión de mi respuesta, hasta que noté que no se trata de jQuery en primer lugar ...) – Tomalak