jQuery CSS选择器

3

我想要的:

$myElement中查找所有带有类.myClass和属性display:none的元素。以下是我尝试过的内容,我可能错过了一些愚蠢的东西:

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

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

3个回答

6
您可以使用:hidden 伪选择器:
$myElement.find('.myClass:hidden')

您提供的语法是指元素的属性,而不是样式定义。实际上,您的选择器将匹配以下元素:
<div class="myClass" display="none">

这并没有太多意义。

如果您想明确地指定 display 为 "none"(因为元素也可以通过其他方式进行隐藏),您可以使用 .filter()

$myElement.find('.myClass').filter(function() {
    return $(this).css('display') == 'none';
});

0

你不能使用display,因为它包含在style中,不是属性选择器。但是你可以使用jQuery的:visible伪选择器:

$myElement.find('.myClass').not(":visible");

jQuery还有一个:hidden伪选择器

$myElement.find('.myClass').filter(":hidden");

这些是由jQuery实现的,而不是真正的CSS选择器,因此最好使用find,然后在结果之后过滤,以便利用任何可用的querySelectorAll优势。


0
据我所知,jQuery中没有选择器可以匹配CSS文件中的规则。然而,对于这种特定情况,有一个:visible(可以与:not组合使用)。它将匹配所有不可见的元素,这可能意味着不仅仅是display:none,但很可能是您要寻找的内容。
参见:http://api.jquery.com/visible-selector/

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接