2011-08-31 80 views
3

我想要什麼:jQuery的CSS選擇器

$myElement找到.myClass類的所有元素和屬性display:none。下面是我已經盡力了,我可能錯過了一些愚蠢的事:

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

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

+0

顯示不是屬性。 – powtac

回答

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'; 
}); 
+0

'display'應該是一種風格吧? –

0

不能使用顯示器和不是屬性選擇器。你雖然可以使用jQuery的:visible僞選擇:

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

jQuery的也有:hidden僞選擇

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

這些都是由jQuery的實施,而不是真正的CSS選擇器,所以最好使用查找和然後過濾結果,所以你可以利用任何可用的好處querySelectorAll的好處

0

據我所知jQuery中沒有選擇器來匹配CSS文件中的規則。但是,對於這個特定的情況,有一個:可見的(可以與:不可以組合)。它將匹配所有不可見的元素,這可能意味着不僅僅是簡單地顯示:沒有,但最有可能的是你正在尋找的東西。

參見:http://api.jquery.com/visible-selector/