jQuery的:如何得到一个父母的特定孩子?

为了给出一个简单的例子,我在页面上重复了下面的块(它是dynamic生成的):

<div class="box"> <div class="something1"></div> <div class="something2"> <a class="mylink">My link</a> </div> </div> 

点击后,我可以通过以下链接进入链接的父级:

 $(".mylink").click(function() { $(this).parents(".box").fadeOut("fast"); }); 

但是…我需要去那个特殊的父母的<div class="something1">

基本上,有人可以告诉我如何参考一个更高级别的兄弟姐妹,而不能直接引用它? 我们称之为大哥。 直接引用大哥的类名会导致页面上该元素的每个实例都淡出 – 这不是所期望的效果。

我试过了:

 parents(".box .something1") ... no luck. parents(".box > .something1") ... no luck. siblings() ... no luck. 

任何人? 谢谢。

调用.parents(".box .something1")将返回与select器.box .something匹配的所有父元素。 换句话说,它会返回.something1父元素,并且.something1内部。

你需要得到最亲密的父母的孩子,像这样:

 $(this).closest('.box').children('.something1') 

这段代码调用.closest来获取匹配select器的最内层的父项,然后调用该父元素的.closest来find你正在寻找的叔叔。

 $(this).parent() 

树遍历很有趣

 $(this).parent().siblings(".something1"); $(this).parent().prev(); // if you always want the parent's previous sibling $(this).parents(".box").children(".something1"); 

更多的方法,你可能会发现这些文档有帮助。

这将find第一个父类与box类然后find第一个子类与正则expression式匹配的something并获得ID。

 $(".mylink").closest(".box").find('[class*="something"]').first().attr("id") 

如果我正确地理解你的问题, $(this).parents('.box').children('.something1')这是你在找什么?

你可以在.each()和括号内使用.each()

 //Grab Each Instance of Box. $(".box").each(function(i){ //For Each Instance, grab a child called .something1. Fade It Out. $(this).children(".something1").fadeOut(); });