2011-12-13 31 views
10

Me gustaría obtener el último visibletd en cada tr en una tabla.Seleccione cada último hijo visible en jQuery

Esto no funciona porque intenta seleccionar el último hijo si es visible:

var last_visible_cells = $(table).find("tr td:visible:last-child"); 

Hasta ahora, el método más simple que he pensado es usar un .each a través del bucle de tr elementos y anexar cada uno de los últimos td visibles a una nueva lista de selectores.

¿Hay alguna manera más simple? ¿Existe algo como esto?

var last_visible_cells = $(table).find("tr").lastMatching("td:visible"); 
+0

que primero tampoco es una sintaxis válida. – Mathletics

+0

Gracias. Sintaxis arreglada –

Respuesta

20

Puede hacerlo:

$('table tr').find('td:visible:last').addClass('last-visible'); 

Ver un full example (jQuery compatible 1.2+)

+0

¡Gracias! Eso es exactamente lo que estaba buscando. –

0

quieres tomar todo el TDS y filtrar sólo para aquellos que no tienen un elemento visible al lado de él.

Dang, que solo funciona si no hay ningún invisibles en el medio de la fila.

+0

Si un grupo de etiquetas alternan en visibilidad (por ejemplo, 0101010), seleccionar "todas las etiquetas visibles sin una etiqueta siguiente visible" seleccionaría todas las etiquetas visibles, en lugar de solo la última. En su lugar, use nextUntil(). http://api.jquery.com/nextUntil/ – ChessWhiz

+0

@ChessWhiz Sí, lo tengo. – Mathletics

0

Sobre la base de la respuesta de Mathletics, pero utilizando nextUntil(). Esto encuentra cada etiqueta visible que no tiene una etiqueta visible siguiente.

$('table tr').children('td').filter(function() { 
    return $(this).is(':visible') && $(this).nextUntil(':visible').length === 0; 
}) 
2

para llegar hasta el último visibles ellos se puede hacer algo como

$('table tr').each(function(){ 
    console.log($(this).find('td:visible:last')) 
}) 
Cuestiones relacionadas