Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery CSS选择隐藏元素_Jquery_Css_Selector_Hidden - Fatal编程技术网

Jquery CSS选择隐藏元素

Jquery CSS选择隐藏元素,jquery,css,selector,hidden,Jquery,Css,Selector,Hidden,我正试图找出如何解决这个恼人的问题,据我所知,CSS中没有:隐藏选择器,但您可以在jQuery中使用它。我知道css中唯一的另一个选择器是:empty,但是我的元素可能并不总是空的,但仍然是隐藏的 这就是我要做的 <div class="wrapper"> <div class="one"></div> <div class="two"></div> </div> 我知道我可以用jQuery来实现这

我正试图找出如何解决这个恼人的问题,据我所知,CSS中没有:隐藏选择器,但您可以在jQuery中使用它。我知道css中唯一的另一个选择器是:empty,但是我的元素可能并不总是空的,但仍然是隐藏的

这就是我要做的

 <div class="wrapper">
     <div class="one"></div>
     <div class="two"></div>
 </div>

我知道我可以用jQuery来实现这一点,但是我想找到一种方法,根据隐藏元素是否更改为可见来自动调整,反之亦然。

我不知道css是否有隐藏选择器,但同时,您可以添加一个可能隐藏的类


.wrapper.one.hidden

您可以看到CSS选择器的完整列表。不幸的是,没有一个应用于可见性或按当前CSS样式选择

使用最少代码的方法是为它们都提供一个
visible
类,您可以使用CSS进行样式设置。然后在元素隐藏时使用jQuery删除
visible
类,并在元素再次可见时添加它。不是很精简,但它似乎是最好的解决方案。

这个怎么样

与其搜索隐藏的一个并对另一个做些什么,为什么不只搜索可见的一个呢

$(document).ready(function() {

    $('.wrapper div').each(function() {
        if ($(this).is(':visible')) {
          //do something special
        }
    })

})

我想你正在寻找这样的东西:

jQuery:

if($('.one').is(":hidden")) {
   $(".two").css("color","red")    
}​

原则上,这在纯CSS中是不可能的。如果CSS允许的话

考虑以下情况:

.wrapper .one:not(:hidden) .wrapper .one { display:none; }
这将创建完美的无限循环。你的浏览器在试图解决它时会死掉


如果你感兴趣,你可以在这个主题上。当它被隐藏时,给它一个“隐藏”类。然后使用
.hidden
。您可以使用可见性:hidden@Madbreaks可能归结为我必须做类似的事情,但这将为我创建更多的代码来添加和删除该类,就像css一样,如果有一个:隐藏函数,它将自动完成。如果可以的话,我只是想减少代码的使用。@Dylan Cross:请看我下面的答案,希望你能找到答案。问题可能是,我将不得不这样做,但这将为我创建更多的代码来添加和删除该类,就像CSS中有一个:hidden函数一样,它会自动完成。如果我能够的话,我只是想减少代码。最终这是我必须这样做的方向,但是唯一的问题,我问题的主要问题是,这只会在第一次加载页面时完成,我的页面完全充满了ajax加载的内容(推送到页面的实时数据),所以,当事情发生变化时,它需要这样做,如果CSS内置了:hidden,那么它就和。1:hidden一样简单,但事实并非如此,因此每次更改时都需要检查大量代码:\n它将运行一次,因为它位于document.ready函数中,但您可以创建一个常规函数,并在ajax调用成功时调用该函数。这样就不会重复不必要的代码。如果您不想使用jQuery检查元素是否可见,我建议使用类。是的,但是我确信他们可以增加最多的运行次数或类似的内容,这样做只会使简单的事情变得简单得多。哈。@DylanCross这不是关于它将运行多少次,而是关于不确定的结果。
.wrapper.one在我上面的示例中是否可见?我明白了。在上面的例子中,这只是关于我实际做什么的简化的绝对基础,“一”和“二”都可以隐藏,或者其中一个可以隐藏,或者两者都可以可见。这取决于不同的事情。(这就是为什么需要一点代码才能使其正常工作,并保持其准确性,因为页面可以随时更改(使用ajax推送数据等)好的,因为纯CSS中没有这样的功能,所以您需要找到其他方法来执行此操作。例如dumb
window.setTimeout(checkIfThoseIsVisible());
。这种轮询没有那么有效,但在某些情况下是唯一的选择。
.wrapper .one:not(:hidden) .wrapper .one { display:none; }