Css :空不';如果有';什么是空白?

Css :空不';如果有';什么是空白?,css,css-selectors,pseudo-class,Css,Css Selectors,Pseudo Class,试图找到一个伪类,该类的目标是,如下所示: <div class="nav-previous"> </div> .empty{ display:none; } if(element.innerHTML.replace(/^\s*/, "").replace(/\s*$/, "") == "") 我试过:blank和:empty,但两者都检测不到。难道这是不可能的吗 :empty确实只适用于完全空的元素

试图找到一个伪类,该类的目标是
,如下所示:

<div class="nav-previous">
                            </div>
.empty{
   display:none;
}
if(element.innerHTML.replace(/^\s*/, "").replace(/\s*$/, "") == "")

我试过
:blank
:empty
,但两者都检测不到。难道这是不可能的吗


:empty
确实只适用于完全空的元素。空白内容意味着它不是空的,一个空格或换行符就足够了。只有HTML注释被视为“无内容”

有关更多信息,请参见此处:

:空白的
选择器正在工作中,它将匹配空白,请参见此处:。但它似乎还没有浏览器支持

更新:

请参阅,了解jQuery可能的解决方案。

您的方法的问题在于您的容器实际上不是空的

:empty伪类表示此时没有子元素的元素 全部的就文档树而言,只有元素节点和内容 节点(如DOM文本节点、CDATA节点和实体引用) 必须将其数据长度非零视为影响 空虚

因为您有空的空格,所以这个伪类不会起作用

:blank伪类应该是正确的,因为这是它的定义:

此空白伪类匹配仅包含内容的元素 它由空格组成,但不是空的

问题是这个伪类还没有被任何浏览器实现,您可以在下面的链接中查看。因此,您需要等到它实现后才能使用此选择器

这很好地解释了你所面临的行为

这里最好的方法就是确保您的div实际上是空的,这样您的方法就可以工作了

最好是定义一个空类,如下所示:

<div class="nav-previous">
                            </div>
.empty{
   display:none;
}
if(element.innerHTML.replace(/^\s*/, "").replace(/\s*$/, "") == "")
然后在此处添加此JS代码,它会将空类附加到您的空白项:

(function($){
    $.isBlank = function(html, obj){
        return $.trim(html) === "" || obj.length == 0;
    };

    $('div').each(function() {
        if($.isBlank(
            $(this).html(), 
            $(this).contents().filter(function() {
                return (this.nodeType !== Node.COMMENT_NODE);
            })
        )) {
            $(this).addClass('empty');
        }
    });
})(jQuery);
检查它是否在这里工作


没有JavaScript/jQuery实现,您就无法做到这一点。
:empty
选择器与空标记一起工作(因此其中甚至没有任何空格),或者与类似
的自动关闭标记一起工作

参考:


如果您想使用JavaScript实现,我想在这里您会找到答案:

正如其他人提到的,这在CSS中还不可能实现。 但是,您可以检查JavaScript是否只有空格。这里有一个简单的JS专用解决方案,匹配的“空”div是蓝色的,而有文本的div是红色的。更新为在空div中添加一个
empty
类,这将允许您使用CSS中的选择器
.empty
轻松地定位它们

仅JS的“空”比较如下所示:

<div class="nav-previous">
                            </div>
.empty{
   display:none;
}
if(element.innerHTML.replace(/^\s*/, "").replace(/\s*$/, "") == "")
如果您使用的是jQuery,则会更容易:

if( $.trim( $(element).text() ) == "" ){
var-navs=document.queryselectoral(“.nav-previous”);
对于(i=0;i
.nav-previous{
填充:10px;
边框:1px实心#000;
}
.nav-previous.empty{
边框:5px纯绿色;
}


不是空的
我确实读了
:blank
我只是不知道它还没有出来。是否有类似于
:blank
的javascript解决方案?