2009-12-15 27 views
5

html:jQuery: Làm cách nào để chọn tất cả P ​​con của bố mẹ tôi?

<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> 

Các Javascript tôi đang cố gắng:

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

Tôi muốn chọn tất cả của P đó là con của mẹ yếu tố nhấp, và loại bỏ các lớp ẩn từ họ. Trong logic tôi không muốn giả định bất cứ điều gì về id của div chứa, hoặc thậm chí là có một div chứa. Tôi chỉ muốn tất cả trẻ em P của container mẹ.

Tôi làm như thế nào?

Trong the selector syntax, tôi có thể tìm cách nhận con cháu hoặc con cái. Tôi không thể tìm được cách để chọn cha mẹ hoặc người đi lên. Tui bỏ lỡ điều gì vậy? cảm ơn.

Trả lời

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

Điều này tìm thấy P là trẻ em ngay lập tức. $ ("div p") tìm tất cả các thẻ P trong tất cả các thẻ DIV bất kể cấp độ. –

0

Tôi thích sử dụng gần nhất, vì nó bong bóng lên:

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

hoặc xem xét:

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

[Cập nhật] Dựa trên ý kiến ​​dưới đây và câu trả lời khác:

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

.show() doe không loại bỏ các thuộc tính lớp, nhưng gần nhất là một ý tưởng tốt trong chung –

+0

Bạn có tâm trí mở rộng về lý do tại sao bạn nghĩ rằng điều này là tốt hơn. Điều này có vẻ thú vị nhưng tôi đã không nhìn thấy cách tiếp cận này ở nơi khác. –

+0

Vấn đề với 'gần nhất' là bạn đang giả định sự hiện diện của' div', mà OP không muốn. Anh chị em, tuy nhiên, là một ý tưởng tốt. – Joel

Các vấn đề liên quan