2012-05-02 2 views
0

IE7 показывает мои пустые divs, поэтому Я хочу создать функцию, которая скрывает div, если в ней нет элемента ul. У меня есть несколько разделов, к которым применяется этот селектор: 'div.Home_filter_par div[class*="cq-colctrl-lt"] div.filters ul' Мне нужно проверить каждый div отдельно. Так что это не будет работать:скрыть пустой div для ie7

function update() { 
    if (('div.Home_filter_par div[class*="cq-colctrl-lt"] div.filters ul') == 0) { 
     $('div.Home_filter_par div[class*="cq-colctrl-lt"] div.filters li').closest('div.parsys_column').hide(); 
    } 
} 

Я также попробовал этот способ, но это скрывает даже див, которые содержат как пустое div.filters и div.filters с ули элементы в них

$('div.Home_filter_par div[class*="cq-colctrl-lt"] 
div.filters:empty').closest('div.parsys_column').hide(); 
+0

Может ли вы дать нам пример html-структура? – Paul

ответ

0

Вы можете выбрать элементы в DOM в зависимости от того, имеют ли они другие специфические элементы внутри них с помощью :has().

Таким образом, вы, вероятно, будет искать что-то вроде этого:

$('div.parsys_column:not(:has(div[class*="cq-colctrl-lt"] div.filters ul))').hide(); 

Хотя я бы вопрос, как вы используете [class*=""]. Вы уверены, что вместо этого вы можете выбрать .cq-colctrl-lt?

Теперь, вложенные :not() и :has() селекторов (или любые вложенные селекторы в целом) делают ваш код труднее читать, так что вы можете рассмотреть расщепление, что, как это:

$('div.parsys_column') 
    .not(':has(div[class*="cq-colctrl-lt"] div.filters ul)') 
    .hide() 
    ; 
+0

не показывает, только если ul существует? Я хочу узнать, нет ли там ul. если у div нет «нет», то сделайте что-нибудь ... – xxx12123

+0

ooh, cool catch. чтобы обратить вспять это, вы можете просто обернуть предложение ': has()' с предложением ': not()'. обновление. –

+0

это сработало спасибо !! – xxx12123

0

Этого должен работать, создавать/прикреплять подобный стиль

<!--[if IE7]> <link href="styles/ie7.css" rel="stylesheet" type="text/css"> <![endif]--> 

и положить что-то в этом роде?

div { 
visibility: hidden; 
} 
div.yourclass { 
visibility: hidden; 
} 
+0

Хотя, возможно, стоит упомянуть, что использование условных комментариев HTML неосознанно может вызвать неожиданные проблемы с производительностью для IE8. http://webforscher.wordpress.com/2010/05/20/ie-6-slowing-down-ie-8/ –

Смежные вопросы