2011-07-29 7 views
5

Esta es probablemente una pregunta bastante inútil, pero creo que sería útil para muchos de nosotros.Ocultar campo de texto y etiqueta asociado

En este caso, me gustaría poder ocultar un cuadro de texto y su etiqueta, todo de una vez, sin tener que seleccionar ambos elementos y ocultarlos individualmente.

<label for="a">some text:</label> 
<input type="text" class="text" id="a" /> 

Así, para el caso anterior, ¿sería posible utilizar un simple comando de jQuery para ocultar a los dos juntos?

Respuesta

13

Usted puede hacer esto

$('label[for=a], input#a').hide(); 

http://jsfiddle.net/jasongennaro/dYFMU/

[ ] selecciona el attribute. En este caso, estamos apuntando a un atributo for que equivale a a.

Al mismo tiempo, usamos un , para hacer otra selección, el input con un id=a.

EDITAR

Además, si usted necesita para hacer esto por múltiples labels y inputs se puede poner el label y id en una matriz de la siguiente manera:

<label for="a">some text:</label> 
<input type="text" class="text" id="a" /> 

<br /> 

<label for="b">some text:</label> 
<input type="text" class="text" id="b" /> 

<br /> 

<label for="c">some text:</label> 
<input type="text" class="text" id="c" /> 

js

var a = ['a','b','c']; 

for(var i=0; i<a.length; i++){ 
    $('label[for=' + a[i] + '], input#' + a[i]).hide(); 
} 

http://jsfiddle.net/jasongennaro/dYFMU/1/

+0

Brillante! ¡Es corto, fácil de leer y una excelente solución! Muchas gracias por este! – Hallaghan

+0

mi placer @Hallaghan. –

1

La forma más sencilla sería simplemente envolverlos en un div y ocultarlos en su lugar.

<div id="hidethis"> 
    <label for="a">some text:</label> 
    <input type="text" class="text" id="a" /> 
<div> 

$("#hidethis).hide(); 
+0

Eso sería hacerlo pero ISN' ¿Hay algo más que pueda usarse para ocultarlos además de tener que agregar un elemento div al código, o más bien, sin tener que agregar más html? – Hallaghan

+0

Puede intentar métodos de encadenamiento. Seleccione la etiqueta, escóndala, obtenga '.next() 'y luego esconder ese, pero esa no sería una solución muy buena. Eso solo estaría usando jQuery por el simple hecho de usar jQuery. Prefiero envolverlos en un elemento principal o simplemente hacer dos llamadas por separado. Pero no soy un experto en jQuery, así que si alguien más tiene una solución para esto, me interesaría verlo también. – Brandon

1

Encuentre la entrada que le apetezca, y luego se puede encontrar su ID mediante

var myInputBoxID = $(some selector).attr("id"); 

continuación, puede hacer referencia a la etiqueta utilizando la siguiente sintaxis para coger de la etiqueta del atributo:

$("label[for=' + myInputBoxID + ']").hide(); 

Probablemente pueda anidar las cosas muy bien para que no necesite almacenar nada como una variable, y en su lugar ejecutar un "para cada" en todos los resultados de su selector de cuadro de entrada. Pero de todos modos la clave es encontrar el ID y luego utilizarlo para encontrar la etiqueta con la etiqueta [a = ...]

2

si desea volver a utilizar la ocultación, puede crear una función similar a:

function hideTandem(id){ 
    $('#' + id + ', label[for=' + id + ']').hide(); 
} 

y llamarlo mediante el suministro de la identificación de la entrada

hideTandem('a'); 
Cuestiones relacionadas