2013-02-27 126 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