2010-09-06 63 views
0

我想知道如何可以隱藏一個div如果子div不存在它裏面。每個div將包含一個h2標籤,但如果該div不包含名爲「info」的div,我希望它被隱藏。這裏的結構:jQuery的隱藏div如果子div不存在

<div class="qaContainer"> (this div can stay as is, as it contains an "info" div) 
    <h2>Testing Category 03</h2> 
    <div class="info">if this div exists then this parent div can stay as is</div> 
</div> 
<div class="qaContainer"> (i need this div to be hidden as it doesn't contain a "info" div) 
    <h2>Testing Category 04</h2> 
</div> 

乾杯

回答

2

我猜是這樣

$('.qaContainer').not($('.info').parent()).hide(); 

會工作。

3

一個顯而易見的解決方案是

$('.qaContainer').each(function() { 
    $(this)[0 == $(this).find('.info').size() ? 'hide' : 'show'](); 
}); 

** 編輯 **

的解決方案是顯而易見的,因爲它不使用花哨的選擇或條件句;它只是找到每個需要的元素(這裏是任何帶有'qaContainer'類的元素)並循環它們。在循環的回調函數中,隱藏或顯示當前正在迭代的元素,具體取決於是否存在具有CSS類「info」的子元素。該解決方案將隱藏或顯示元素,因此它是通用的並且可重用的;只要DOM發生變化並且想要更新'qaContainer'元素,就執行這三行。

+0

+1。雖然這有效,但我認爲解釋爲什麼這是一個「明顯的解決方案」會更有幫助。 – 2010-09-06 04:20:30

+0

好的,解決方案編輯:) – 2010-09-06 04:27:46

+0

這是一個非常有趣的解決方案(儘管作爲一個更加用CSS工作的人,我通常會發現選擇器更直觀)。我認爲'.length'會比調用一個函數更好。 – 2010-09-06 04:31:27