2010-05-22 16 views
28

Oculto un montón de cuadros de texto y funciona bien, el problema es que los cuadros de texto están en una tabla, así que también necesito ocultar las etiquetas correspondientes. la estructura es algo como estoJquery Ocultar filas de tablas

<tr> 
<td> 
Label 
</td> 
<td> 
InputFile 
</td> 
</tr> 

, de hecho, es sólo más fácil si me escondo las filas que tienen un fileinput, puede alguien ayuda por favor

+1

Puede aclarar exactamente qué 'fileinput' o 'InputFile' se refiere en realidad a? ¿Es un 'tipo de entrada =' 'texto' 'con una cierta clase, o un' tipo de entrada = '' archivo ''? –

Respuesta

56

esto podría funcionar para usted ...

$('.trhideclass1').hide(); 

 

<tr class="trhideclass1"> 
    <td>Label</td> 
    <td>InputFile</td> 
</tr> 
+0

En mi opinión, es mejor mantener el marcado lo más limpio y conciso posible, tanto para el mantenimiento como para la legibilidad. –

+2

(Además, la intención de la pregunta es 'cómo escondo un elemento que contiene un elemento determinado' no solo 'cómo escondo un elemento con una clase determinada') –

+1

Gracias Derek, tu respuesta fue la mejor solución para este caso – tomasz

1

Si la etiqueta está en una fila de la tabla se puede hacer esto a ocultar la fila:

('.InputFile').parent().Hide() 

puede refinar su selector como sea necesario y luego la fila de tabla que contiene ese elemento.

jQuery Selectores de ayuda: http://api.jquery.com/category/selectors/

EDITAR Esta es la forma correcta de hacerlo.

('.InputFile').parents('tr').hide() 
+0

-1 El padre del control de entrada sería '', y el método hide es minúscula –

20

Sólo tiene que recorrer el árbol DOM para la <tr> más cercana al igual que ...

$("#ID_OF_ELEMENT").parents("tr").hide(); 

jQuery API Reference

+1

Creo que deberían ser los padres(), no el padre() –

+0

Abajo voto -1. parent() toma el primer elemento. parents() es el uso correcto. – ICodeForCoffee

+0

@Bobby @ICodeForCoffee Ustedes tienen razón; He actualizado mi respuesta –

2

$('inputFile').parent().parent().children('td > label').hide();

puede ayudarle a navegar dos niveles arriba (a TD, a TR) que se mueve dos niveles hacia abajo (todo el TD en la que TR y sus etiquetas de la etiqueta), aplicando la función de ocultar() allí.

si desea permanecer en el nivel de TR y los ocultan:

$('inputFile').parent().parent().hide();

... es suficiente.

puede navegar muy fácilmente a través de los elementos utilizando los selectores de jquery.

padres se documenta aquí: http://api.jquery.com/parent/

piel se documenta aquí: http://api.jquery.com/hide/

0

creo que la mejor opción si quieres tanto campo de texto y la etiqueta para ocultar al mismo tiempo es asignar a cada uno con una clase y ocultar ellos como este:

jQuery(".labelClass, .inputClass").hide(); 
1

Usando parents('tr').hide() funciona. Sin embargo, si hay una tabla incrustada, todas las filas padre tr estarán ocultas. En mi caso, todo el formulario está oculto, ya que hay muchas tablas integradas.

8

Esto debería hacer el truco.

$(textInput).closest("tr").hide(); 
2

html

<tr><td><a href="" onclick=hideRow(event)></a></td></tr> 

jQuery

function hideRow(event){ 
    $(event.target || event.srcElement).parents('tr').hide(); 
} 
Cuestiones relacionadas