0

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 且其中包含 ul 元素的 div

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

2 回答 2

0

这应该可以,像这样创建/附加样式表

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

并把这样的东西放进去?

div {
visibility: hidden;
}
div.yourclass {
visibility: hidden;
}
于 2012-05-02T07:50:36.927 回答
0

您可以使用: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()
    ;
于 2012-05-02T07:52:27.467 回答