2013-02-27 129 views
0

我需要使用jQuery在我的HTML中找到一个名为.detailsBox的div。 div是循环中输出相同类名的一系列div中的一个,当点击一个链接时会滑落。jQuery选择器:如何选择父div中的另一个元素

下面是HTML:

<div id="support"> 
    <h2><a href="#" class="title"><?php echo $growing->title; ?></a></h2> <!-- Click on this link... --> 

    <div class="detailsBox"> <-- ... and this div will slide down from being hidden --> 
     <div id="tabs-text"> 
      <p class="description"><?php echo $growing->description; ?></p> 
     </div> 

     <div id="learnmore"> 
      <a class="sendEmail" target="_blank" id="<?php echo $growing->link;?>" href="<?php echo base_url() . 'channel-partners/tools/' . $growing->link; ?>"><?php echo $growing->link_text; ?></a>  
      <a class="sendEmail" id="<?php echo $growing->link2;?>" href="<?php echo $growing->link2; ?>"><?php echo $growing->link_text2; ?></a> 
     </div> 

    </div> 
</div> 

我能找到父DIV这样的:

var parent = $(this).parent().parent(); 

但我需要一种方法来然后找到孩子.detailsBox。我怎么做。我想这和它没有工作:

$(parent + '> div.detailsBox').slideDown(); 

控制台抱怨,这是一个无法识别的表情,因为我想一个对象和一个字符串相结合。我如何让整个事件成为jQuery中的选择器?

+0

后两行发生在$('。title')'的单击事件中。 – sehummel 2013-02-27 23:32:13

+0

'$(this).closest('div')。find('。detailsBox')。slideDown();' – adeneo 2013-02-27 23:33:54

回答

1

尝试parent.children('.detailsBox').slideDown();

parent()所以你必须关闭该对象的方法返回一个jQuery对象。

+0

这样做了。谢谢,@Justin。 – sehummel 2013-02-27 23:35:13

0

你可以通过父母作为上下文参数在jQuery中,即。

$('div.detailsBox', $(parent)).slideDown(); 
+0

根据OP的例子,'parent'已经是一个jquery对象,否则就是很好的解决方案。 – Nelson 2013-02-27 23:34:30

+0

有趣的方法。我不知道你可以在选择器中传递上下文。 – sehummel 2013-02-27 23:52:10

0

只需使用parent.find(".detailsBox")。不过,我总是建议用$符号为jquery对象加上前缀,即var $parent = $(...)

+0

这是最佳做法吗?我以前见过这个,但从来不确定人们为什么这么做。这是为了清晰吗? – sehummel 2013-02-27 23:49:44

+0

我不会称它为“最佳实践”,而是“良好实践”,因为它可以帮助我区分不同的对象和简单的变量。例如,我会使用'var h = $(this).height',而不是'var $ sib = $(this).siblings(“div”)')。将jQuery方法附加到jQuery对象,如'$ sib.addClass(“item”)'或'$ sib.hide()'。 – Terry 2013-02-28 00:15:52

+0

这很有道理。 – sehummel 2013-02-28 15:18:45