如果div没有类的子级,则css隐藏div

如果div没有类的子级,则css隐藏div,css,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> 这个div必须隐藏起来 此div必须可见 儿童部 如果C

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

这个div必须隐藏起来
此div必须可见
儿童部

如果CSS不可能,可能是javascript或jQuery?

我认为仅CSS是不可能的,但javascript绝对是可能的

你必须
-查找具有类
父类的所有div

-用class
child

-如果没有这样的子项,则设置
style.display=none

现在,使用纯javascript这可能有点复杂。您可以从中使用
GetElementsByCassName
,然后应用上述逻辑:

//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";
    }
}

实例:

自CSS3以来,您可以使用:空选择器。这种方法得到了所有现代浏览器的广泛支持,并且比javascript的替代方法快得多。

不,子div也将被隐藏。你为什么要这样做?我不认为你可以单独在CSS中这样做。但是,您可以使用JavaScript来实现这一点。查找类似“if(.parent AND.parent has.child)的内容隐藏这个.parent(而不是另一个父项),如果这对您来说更清楚的话。最好在css中完成,或者甚至添加一个类名,如果。父级有或没有子级,如果这能让你在任何地方?thnx。我做了更多的研究,也尝试用另一种方式(隐藏所有父项,然后只显示有子项的父项),但我必须得出结论,您不能使用css选择器来选择父项。您只能选择元素本身或被继承者。但是
:empty
失败,如果在
内部。parent
是任何文本(包括空格或换行符)。@codename-这不是空选择器失败,因为包含偶数空格内容的元素不是空的。
$(".parent").each(function()
{
    if($(this).children(".child").length == 0)
    {
        $(this).hide();
    }
});