Jquery ocultar clase mostrar div individual

Tengo una lista de divs que se generan dinámicamente y tiene el siguiente aspecto

<div class="Foo">
  <div class ="Bar" id ="Something{X}">  // Where {X} is a counter i.e "Something1" , "Something2"
  <p>some stuff</p>
  <form>
    <input />
  </form>
</div>

Ahora, después de generar dinámicamente todos mis div de clase foo, hago lo siguiente

$('.Foo').hide();

Lo que obviamente oculta todos los div como esperaba. Sin embargo, lo que me gustaría es la capacidad de hacer clic en un enlace sobre el div que le permita mostrar ese div individual.

Ahora, normalmente, para una clase que sé, simplemente iría a $('.Foo').show(); y TODOS se mostrarían.

Sin embargo, hacer lo siguiente no funciona.

$("#Something1").show(); 

¿Es esto algo que jQuery permite ocultar todo y luego mostrar elementos individuales? ¿O estoy haciendo esto mal?

preguntado el 27 de julio de 12 a las 16:07

Parece que a su HTML le falta una etiqueta Div cercana (para uno u otro, es difícil de decir). -

4 Respuestas

Su problema es que está ocultando el contenedor principal, que permanece oculto.

Intenta ocultar tus "barras" en su lugar

$('.bar').hide();

y entonces $("something1").show()

Respondido 27 Jul 12, 16:07

Está ocultando el div principal con la clase foo; por lo tanto, debe mostrar ese div en su lugar.

$("#Something1").parent().show(); 

Respondido 27 Jul 12, 16:07

En lugar de:

$(".foo").hide();

Debería ser:

$(".bar").hide();

Y luego reabrir uno por:

$("#Something1").show();

Estaba ocultando el contenedor principal y luego intentaba abrir uno de sus elementos secundarios, por lo que no podía verlo.

Respondido 27 Jul 12, 16:07

<p class="showlink">Link to show</p>
<div class="Foo">
  <div class ="Bar" id ="Something{X}">  // Where {X} is a counter i.e "Something1" , "Something2"
  <p>some stuff</p>
  <form>
    <input />
  </form>
</div>

JS

$(".showlink").on('click', function() {
    $(this).next('.Foo').show();
});

Respondido 27 Jul 12, 16:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.