2010-03-30 12 views
9

tengo una página HTML con una tabla que contiene una fila oculta:Cambio propiedad de presentación fila de la tabla

<table> 
    <tr id="hiddenTr" style="display:none"> 
    ... 
    </tr> 
</table> 

necesito para que sea visible en el lado del cliente usando jQuery. He intentado esto

$('#hiddenTr').show(); 

y esto

$('#hiddenTr').css('display', 'table-row'); 

Ambas implementaciones no funcionan para mí. Además, el segundo no es un navegador cruzado.

UPD. Lo siento, muchachos. Eso fue mi culpa: escribí mal el ID del elemento tr. Eso es extraño $ ('hiddenTr') no devolvió nulo ...

+1

Si no tiene etiqueta , ¿cómo sabría usted que su visibilidad se está estableciendo en verdadero o no? –

+0

@Vishal Seth: Por supuesto que hay algo de contenido dentro de tr. Perdón por un poco de muestra incorrecta. – SiberianGuy

+2

FYI - jQuery no devolverá nulo si no encuentra una coincidencia: devuelve una matriz vacía. – Ray

Respuesta

5

El primero debería funcionar. ¿Lo está envolviendo en $ (documento). Listo (función() {}); ?

$(document).ready(function(){ 
    $('#hiddenTr').show(); 
}); 
+0

Ambos funcionan para mí. http://jsbin.com/apubo/2/edit – Mark

+0

sí ... ambos son correctos. Simplemente no me molesté en mencionar el segundo ya que el primero logra lo que quiere sin ningún problema de navegador cruzado. –

2

Se podría intentar establecer display:auto, pero, honestamente, yo he tenido más que problemas para configurar manualmente la propiedad de visualización de la tabla de filas/celdas.

Lo que he encontrado generalmente funciona es crear una clase de CSS llamada "oculta" que tiene display:none. En lugar de mostrar() ing, simplemente elimino esa clase.

1

intenté?

$('#hiddenTr').css('display','block'); 

Además, se debería poner en una <TD></TD> con algo en él, al menos un &nbsp; por lo que la fila no se colapsa por su cliente navegador. Diffrent clientes se comportan diffrently ...

10

siempre que establece la propiedad style.display en "" (cadena vacía) para mostrar una fila de la tabla oculta:

var row = document,getElementById("row_id"); 
row.style.display = ""; // shows the row 

Para ocultar de nuevo:

row.style.display = "none"; // hides the row 

en jQuery, esto sería:

$("#row_id").css("display", ""); // show the row 

o

$("#row_id").css("display", "none"); // hides the row 

IE no parece que le gusta el valor de 'tabla de la fila' para la pantalla. Y 'bloque' no es correcto, y parece arruinar la pantalla en otros navegadores a veces.

+0

Sí, configurar la pantalla como cadena vacía es la mejor manera de hacerlo. Por cierto, mientras que IE7 no es compatible con 'table-row', IE8 lo hace. Además, 'block' en Firefox definitivamente arruina el diseño de una tabla, mientras que IE (7 u 8) no lo hace. –

Cuestiones relacionadas