2009-12-15 16 views
5

html:jQuery: ¿Cómo selecciono todos los P hijos de mi padre?

<style> 
    hidden { display:none;} 
</style> 

<div id="div1"> 
    <a href="#" onclick="expandSiblingParagraphs(this)">+</a> 
    <p>Hello</p> 
    <p class="hidden">Lorem ipsum dolor sit amet, consectetuer adipiscing elit. 
    Integer vulputate, nibh non rhoncus euismod, erat odio pellentesque lacus, 
    sit amet convallis mi augue et odio. Phasellus cursus urna facilisis quam. 
    Suspendisse nec.</p> 
    <p class="hidden">Another hidden paragraph</p> 
</div> 

El Javascript Estoy tratando:

var expandSiblingParagraphs = function(elt){ 
    $(this).parent()....? 
}; 

Quiero seleccionar todo P de que son hijos de padres del elemento se ha hecho clic, y quitar la clase oculta de ellos. En la lógica, no quiero suponer nada sobre la identificación del div que contiene, o incluso si hay un div que lo contiene. Solo quiero todos los P hijos del contenedor principal.

¿Cómo puedo hacer eso?

En the selector syntax, puedo encontrar la manera de conseguir descendientes o hijos. No puedo encontrar una manera de seleccionar padres o ascendientes. ¿Me estoy perdiendo de algo? gracias.

Respuesta

15
$(this).parent().children("p.hidden").removeClass("hidden"); 
+3

Esto encuentra P que son hijos inmediatos. $ ("div p") encuentra todas las etiquetas P dentro de todas las etiquetas DIV, independientemente del nivel. –

0

me gusta usar más cercano, ya que se propaga hacia arriba:

$(this).closest("div").find("p").show() 

o considerar:

$(this).siblings("p").show(); 

[Actualización] Basándose en los comentarios de abajo y otras respuestas:

$(this).siblings("p.hidden").removeClass("hidden"); 
+0

.show() doe sn't quita el atributo de clase, pero lo más cercano es una buena idea en general –

+0

¿Te importa expandirte sobre por qué crees que es mejor? Esto parece interesante, pero no he visto este enfoque en otro lado. –

+0

El problema con 'lo más cercano' es que está asumiendo la presencia de un' div', que el OP no desea. Hermanos, sin embargo, es una buena idea. – Joel

Cuestiones relacionadas