Jquery CSS选择隐藏元素
我正试图找出如何解决这个恼人的问题,据我所知,CSS中没有:隐藏选择器,但您可以在jQuery中使用它。我知道css中唯一的另一个选择器是:empty,但是我的元素可能并不总是空的,但仍然是隐藏的 这就是我要做的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来实现这
<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中没有这样的功能,所以您需要找到其他方法来执行此操作。例如dumbwindow.setTimeout(checkIfThoseIsVisible());
。这种轮询没有那么有效,但在某些情况下是唯一的选择。
.wrapper .one:not(:hidden) .wrapper .one { display:none; }