2010-03-08 26 views
33

Tengo una tabla que se parece a:jquery seleccionar todos los elementos excepto el último por grupo

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

Lo que yo quiero es un selector de jQuery que elegirá todos excepto el último td de cada fila de la tabla. Probé:

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

Pero en lugar de todas las células, pero el último en cada fila cambiado, todas las células, pero el último de ellos en la tabla se seleccionan. Del mismo modo, si lo cambio a:

$("tr td:last").css("background-color","red"); 

el único que cambia es la última celda. ¿Cómo elijo el último (o no último) de cada fila?

Respuesta

55

Utilice esta:

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

Es decir cada <td> que no es el último en esa particular <tr>

+0

No estoy seguro de que esto funcionará en mi caso, pero tal vez usted me puede decir con seguridad. Simplifiqué mi html por el bien de la pregunta, pero cada td tiene otros elementos adentro, como entradas y etiquetas. ¿Buscará el 'último hijo' también descendientes, o solo los niños de primer nivel? – Anthony

+3

Solo el td, ya que no hay espacio en el selector significa que los operadores ':' se aplican a ese mismo elemento, en este caso el ''. Así que solo niños de primer nivel, si tienes una tabla con td anidados, cambia el selector para que sea 'tr> td: not (: last-child)', esto asegura solo el primer hijo de cualquier tabla/tr en la que estés . –

+0

Gracias @Nick! ¡Esto aclaró una gran parte de la funcionalidad de jQuery que estoy escribiendo! – dennismonsewicz

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

se traduce en: para cada elemento en el selector de $('tr'), hacer un find() para todos los td s que no duran.
Nuevo resultado es aproximadamente td s ahora, por lo que puede aplicar .css() según lo deseado.

Cuestiones relacionadas