2010-04-05 72 views
6

用一個簡單的列表開始:如何計算未隱藏的列表元素?

<ul> 
    <li>Item 1</li> 
    <li style="display: none;">Item 2</li> 
    <li>Item 3</li> 
</ul> 

我知道,我可以減去從列表中總

$('ul li').size() - $('ul li:hidden').size() 

隱藏要素,但我認爲有可能是一個更優雅的方式使用jQuery實現這一目標:

$('ul li:hidden:not').size() 

這是行不通的。有任何想法嗎?

回答

22

:hidden相反的是:visible-jQuery docs

$('ul li:visible').size() 
+0

哦,jeez,謝謝。現在我感到很傻。 我想說的是,我的谷歌搜索短語很難找到。 – Baloneysammitch 2010-04-06 16:53:10

+0

如果您從文檔(http://api.jquery.com/hidden-selector/)的隱藏頁面開始,然後點擊右上角類別中的「可見性過濾器」,您會發現它。 jQuery文檔非常好。 – 2010-04-06 18:21:55

+0

應該使用'.length'而不是'.size()'。 'size()'有一個函數調用的開銷,其中'.length'不是 – zgr024 2013-08-08 12:55:08

2

最簡單形式是:

var hidden = $("ul > li:hidden").length; 

在一個側面說明,正確使用:not()

var hidden = $("ul > li:not(:visible)").length; 

最後一個jQuery對象支持size()方法和length屬性,該屬性是可以互換的。

+0

感謝您的幫助:not() 我不知道你可以把這些條件放在引號內。 – Baloneysammitch 2010-04-06 21:04:08