2011-12-22 34 views
0

我有一個div這樣的:如何隱藏一個div,如果它不包含一個表裏面

<div class="EventsRollup"> 
    <span class="EventsRollupTitle">Health Lecture Events</span> 
    <!--this is where a table would be dynamically inserted by sharepoint 
     based on some filter, if filter is true, a tabel will get in there, 
     else not--> 
</div> 

使用jQuery,我怎麼躲整個div如果沒有table插入,因爲div有背景顏色和空背景顏色顯示沒有table的內容?

回答

3
$('.EventsRollup').not(':has(table)').hide(); 

$('.EventsRollup:not(:has(table))').hide(); 
+0

它的工作原理,但它確實顯示快如秒的div,然後隱藏它使頁面閃爍..如何防止? –

+0

@AnjuThapa,默認情況下使用一些CSS隱藏它。 'display:none;' –

+0

@AnjuThapa:Xeon06是對的。你最好隱藏CSS中的所有'.EventsRollup'元素,然後顯示那些*有*表的元素。 $('。EventsRollup')。has('table')。show()'或'$('。EventsRollup:has(table)')。show()' – 2011-12-22 16:20:18

3
if ($('.EventsRollup').find('table').length === 0) { 
    $('.EventsRollup').hide(); 
} 

這是假設只有一個.EventsRollup ......如果有更多的,你可以使用一個循環...

$('.EventsRollup').each(function() { 
    $this = $(this); 
    if ($this.find('table').length === 0) { 
     $this.hide(); 
    } 
}); 
+2

如果OP不包含表格,則OP要隱藏它。你不想'''而不是'>'? –

+0

@ Xeon06對,錯過了這個感謝。 – jondavidjohn

2
jQuery(".EventsRollup").filter(function(){ 
return !this.getElementsByTagName("table").length; 
}).hide();