jQuery CSS选择器

时间:2011-08-31 10:54:39

标签: jquery css

我想要的是什么:

$myElement内找到包含课程.myClass和属性display:none的所有元素。以下是我的尝试,我可能错过了一些愚蠢的事情:

$myElement.find('.myClass[display=none]')

$myElement.find('.myClass').filter('[display=none]')

3 个答案:

答案 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,但很可能它是你正在寻找的。

请参阅:http://api.jquery.com/visible-selector/