时间:2011-08-04 09:53:09

标签: css

如果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?

2 个答案:

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

直播示例:http://jsfiddle.net/nivas/JWa9r/