2011-12-22 4 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 является правильным. Вам лучше скрыть все элементы '.EventsRollup' в CSS, а затем показать те, у которых * есть * таблица. '$ ('. EventsRollup'). Has ('table'). Show()' или '$ ('. EventsRollup: has (table)'). Show()' –

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 хочет скрыть его, если он * не содержит таблицу. Вы не хотите '==' вместо '>'? –

+0

@ Xeon06 прямо сейчас, пропустил это спасибо. – jondavidjohn

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