2011-12-22 27 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();