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();
答案 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()
;