2

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

所以这就是我想要做的。

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

我希望能够选择“一个”或“两个”,如果它当前被隐藏,我想对另一个不是的元素做一些事情。

喜欢:

.wrapper .one:hidden .wrapper .two

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

4

5 回答 5

1

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

.wrapper .one.hidden

于 2012-08-17T04:02:17.383 回答
1

原则上在纯 CSS 中是不可能的。如果 CSS 允许这样做,那么“出现的第一只啄木鸟将摧毁文明”

考虑类似的事情:

.wrapper .one:not(:hidden) .wrapper .one { display:none; }

这创造了完美的无限循环。你的浏览器会在试图解决它时死掉。

如果有趣,您可以阅读我关于该主题的文章。

于 2012-08-17T04:31:32.577 回答
0

您可以在此处查看 CSS 选择器的完整列表。不幸的是,没有适用于可见性或按当前 CSS 样式选择的内容。

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

于 2012-08-17T04:07:39.160 回答
0

这个jsfiddle怎么样

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

$(document).ready(function() {

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

})
于 2012-08-17T04:07:47.210 回答
0

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

看演示

jQuery:

if($('.one').is(":hidden")) {
   $(".two").css("color","red")    
}​
于 2012-08-17T04:20:55.763 回答