我想要的是什么:
在$myElement
内找到包含课程.myClass
和属性display:none
的所有元素。以下是我的尝试,我可能错过了一些愚蠢的事情:
$myElement.find('.myClass[display=none]')
和
$myElement.find('.myClass').filter('[display=none]')
答案 0 :(得分:6)
您可以使用:hidden
伪选择器:
$myElement.find('.myClass:hidden')
您提出的语法是指元素的属性,而不是样式定义。从本质上讲,你的选择器会匹配一个像这样的元素:
<div class="myClass" display="none">
这没有多大意义。
如果您想明确display
是“无”(因为元素可以隐藏in other ways also),您可以使用.filter()
:
$myElement.find('.myClass').filter(function() {
return $(this).css('display') == 'none';
});
答案 1 :(得分:0)
您不能使用显示,因为它包含在样式中,而不是属性选择器。您可以使用jQuery的:visible
伪选择器:
$myElement.find('.myClass').not(":visible");
jQuery还有一个:hidden
伪选择器
$myElement.find('.myClass').filter(":hidden");
这些是由jQuery实现的,而不是真正的CSS选择器,所以最好使用find然后过滤结果,这样你就可以利用任何可用的querySelectorAll
好处
答案 2 :(得分:0)
据我所知,jQuery中没有选择器来匹配CSS文件中的规则。但是,对于这种特定情况,有一个:可见(可以与:结合使用)。它将匹配所有不可见的元素,这可能不仅仅意味着显示:none,但很可能它是你正在寻找的。