如果div没有具有特定类名的子div,是否可以用css隐藏div?
<div class="parent">
This div must be hidden
</div>
<div class="parent">
This div must be visible
<div class="child">
child div
</div>
</div>
如果使用CSS无法实现,可能使用javascript或jQuery?
答案 0 :(得分:13)
从CSS3开始,您可以使用:empty选择器。这种方法得到了所有现代浏览器的广泛支持,并且比它的javascript替代方法快得多。
答案 1 :(得分:6)
我认为只有CSS才能实现这一点,但使用Javascript肯定是可行的。
你必须
- 找到课程parent
的所有div
- 找到所有带有班级child
的儿童div的人
- 如果没有这样的孩子,请设置style.display = none
现在,使用纯javascript ,这可能有点复杂。您可以使用this question中的getElementsByClassName
,然后应用上述逻辑:
//getElementsByClassName from @CMS's answer to the linked question
var parentDivs = getElementsByClassName(document, "parent");
for(var i=0; i<parentDivs.length; i++)
{
var children = getElementsByClassName(parentDivs[i], "child");
if(!children || children.length == 0)
{
parentDivs[i].style.display = "none";
}
}
使用jQuery,这更简单:
$(".parent").each(function()
{
if($(this).children(".child").length == 0)
{
$(this).hide();
}
});