2009-12-15 13 views
5

html:jQuery: Come seleziono tutti i figli P di mio 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> 

Il JavaScript che sto cercando:

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

voglio selezionare tutti P che sono figli del genitore dell'elemento cliccato, e rimuovere la classe nascosta da loro. Nella logica non voglio assumere nulla riguardo l'id del div contenente, o anche che ci sia un div contenente. Voglio solo tutti i figli P del contenitore genitore.

Come faccio?

In the selector syntax, posso trovare un modo per ottenere discendenti o figli. Non riesco a trovare un modo per selezionare i genitori o ascendenti. Mi sto perdendo qualcosa? grazie.

risposta

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

Questo trova P che sono bambini immediati. $ ("div p") trova tutti i tag P all'interno di tutti i tag DIV indipendentemente dal livello. –

0

Mi piace usare più vicino, dal momento che sgorga:

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

o prendere in considerazione:

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

[Update] Sulla base di commenti qui sotto e altre risposte:

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

.show() doe non rimuovere l'attributo di classe, ma il più vicino è una buona idea in generale –

+0

Ti spiacerebbe ampliare il motivo per cui pensi che sia meglio. Questo sembra interessante ma non ho visto questo approccio altrove. –

+0

Il problema con 'closest' è che si presume la presenza di un' div', che l'OP non vuole. I fratelli, tuttavia, è una buona idea. – Joel

Problemi correlati