2011-05-27 19 views

Respuesta

100

Utilice la clase :first-child seudo en lugar de :first.

$("#myTable tr td:first-child").addClass("black"); 

La clase de pseudo realidad :first selecciona el primer elemento que fue devuelto en su lista. Por ejemplo, $('div span:first') devolvería solo el primer tramo bajo el primer div que se devolvió.

La clase pseudo class :first-child selecciona el primer elemento bajo un elemento principal en particular, pero devuelve tantos elementos como primeros elementos secundarios. Por ejemplo, $('table tr td:first-child') devuelve la primera celda de cada fila.

Cuando usó :first, devolvió solo la primera celda de la primera fila que se seleccionó.

Para obtener más información, consulte la documentación de jQuery:

4

así:

$("#myTable tr").each(function(){ 
    $(this).find('td:eq(0)').addClass("black"); 
}); 
+0

Este método es un poco menos eficiente porque está utilizando un bucle, un 'encontrar', y crear una función, mientras que al usar la pseudoclase': first-child', no está agregando mucho procesamiento que no estaba en uso en su código original . Sin embargo, sigue siendo una buena alternativa. –

+0

@Justin Satyr, ¿qué crees que está usando jQuery? Una varita mágica? – Teneff

+4

No, soy consciente de que detrás de las escenas jQuery usa todas esas cosas, pero (a) esperaría que el uso de un solo selector sea más rápido que el uso de un solo selector Y una instrucción 'find', y (b) es al menos más eficiente en términos de cantidad de código para usar un solo selector. –

9

que estaba muy cerca, creo que todo lo que necesita es :first-child en lugar de :first, así que algo como esto:

$("#myTable tr td:first-child").addClass("black"); 
3

Probar:

$("#myTable td:first-child").addClass("black"); 
+0

te estás perdiendo el tru – bevacqua

+1

Sí. : o) Oopsie. Lo dejaré así en caso de que alguien quiera tener la primera celda de cualquier mesa negra. – stefgosselin

5
$("#myTable tr").find("td:first").addClass("black"); 
+1

Esto es menos eficiente que usar ': first-child' porque tiene el mismo resultado pero se engancha en un bucle. Sin embargo, sigue siendo un buen uso del método 'find'. –

+0

@Justin tienes razón, no sabía del selector de primer hijo trabajando así. – bevacqua

+3

First-child no ayuda cuando se coloca un TD después de un TH, y está tratando de encontrar el TD. En ese caso, jq ​​no le devolverá el TD, porque no es el primer hijo de la fila, y entonces: primero es útil. – neoswf

Cuestiones relacionadas