为ie7隐藏空div

时间:2012-05-02 07:39:20

标签: javascript jquery

IE7显示我的空div,所以 我想创建一个隐藏div的函数,如果它没有ul元素。 我有几个div适用于此选择器:'div.Home_filter_par div[class*="cq-colctrl-lt"] div.filters ul' 我需要分别检查每个div。所以这不起作用:

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,其中包含ul元素

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

2 个答案:

答案 0 :(得分:0)

这应该可行,创建/附加样式表,如此

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

并在其中添加这样的内容?

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

答案 1 :(得分:0)

您可以使用:has()根据其中是否包含其他特定元素来选择DOM中的元素。

所以你可能正在寻找这样的东西:

$('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()
    ;