2009-12-15 98 views
5

HTML:jQuery:如何选择我父母的所有P孩子?

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

的JavaScript我想:

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

我想选择P的全部是点击的元素的父的孩子,并从中删除隐藏类。在逻辑中,我不想对包含div的id做任何假设,甚至不想包含div。我只想要父容器的所有P孩子。

我该怎么做?

the selector syntax,我可以找到一种方法来获得后代或儿童。我无法找到选择父母或上司的方法。我错过了什么吗? 谢谢。

回答

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

这发现P是直接的孩子。 $(“div p”)查找所有DIV标签内的所有P标签,而不管其级别如何。 – 2009-12-15 16:27:28

0

我喜欢用最接近的,因为它冒泡:

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

[更新]基于下面的评论和其他答案:

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

或考虑

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

.show()doe不要删除班级属性,但最接近的一般是一个好主意 – 2009-12-15 16:26:33

+0

您是否介意拓展为什么您认为这更好?这看起来很有趣,但我还没有在别处看到过这种方法。 – 2009-12-15 16:26:51

+0

“最接近”的问题是,你假定OP不需要的'div'的存在。然而兄弟姐妹是个好主意。 – Joel 2009-12-15 16:30:14

相关问题