2012-07-23 92 views
3

我有div元素,如下圖所示。我需要將CSS顯示爲塊的div計數。jQuery count div有顯示:block

我的嘗試:

1)$('div.price_listing_container:visible').length

2)

$('#content').children("div").filter(function() { 
     return $(this).css('display') !== 'none'; 
    }).length 

3)$("#content > div").filter(":block").size()

最後的選擇並沒有在所有的工作,另兩個工作警報,但如果我自己返回的值賦給一個變量的值來0,不知道爲什麼會這樣,請參見下面的代碼:

var numberOfResultsVisible = ($('#content').children("div").filter(function() { 
       return $(this).css('display') !== 'none'; 
      }).length); 

var numberOfResultsVisible = $('div.price_listing_container:visible').length; 

分配值之後談到0

能否請你告訴我是否可以用一些其他的方法來獲得計數。

enter image description here

+0

「其他兩個工作在警報,但如果我將它們的返回值賦值給變量值爲0,不知道爲什麼會這樣。 - 發佈無法正常工作的代碼,這看起來應該**正常工作。 – 2012-07-23 11:40:33

+0

@AnthonyGrist:見編輯的問題。 – 2012-07-23 11:45:56

+0

在這兩行之一直接返回0時直接調用alert(numberOfResultsVisible);? – 2012-07-23 11:48:20

回答

1
$('#content').find("div:visible").length 

見演示:http://jsfiddle.net/E252r/2/

+0

有什麼區別如果使用:'$('#content')。find(「div:visible」)。length;'??? – Dev 2012-07-23 11:38:51

+0

@Curt:出錯「錯誤:語法錯誤,無法識別的表達式:[style = display:none]」 – 2012-07-23 11:41:08

+0

@Sandy對不起沒有測試過。需要語音標記。修復了帖子。工作示例:http://jsfiddle.net/E252r/ – Curt 2012-07-23 11:42:09

1

沒有內嵌樣式 - 添加其他類:

<div class="price_listing_container plblock"> ... 

然後你可以用它們進行過濾:

$('#content div.price_listing_container.plblock') 

在你的CSS你會有:

div.plblock {display:block;} 

這是一個更清潔的方法。

+0

查看OP中的代碼:「我有div元素,如下圖所示」 - 所有內聯樣式 – BonyT 2012-07-23 11:39:52

0
$('#content').children('div:visible').length 
0

您正在尋找getComputedStyle()住宅。我聽說它在IE中不可用,它可能有其自己的替代功能。

0
var display = $("#content").attr("style"); 
if(display.text(style) == "display:none") 
    { 

    } else { 

    } 
+0

這既是無效的語法,也不是問題的要求。 – 2012-07-23 11:44:23

+0

它在正確的方向踢? – 2012-07-23 11:46:34

0

你說,它的工作戒備比試試這個,你做的警報

//alert($('div.price_listing_container:visible').length); 
var myVar; 
eval('myVar = '+$('div.price_listing_container:visible').length+';'); 

當你給它分配共享引用任何東西新的變量,如果引用的內存的值比改變新的變量也被改變。通過這段代碼它不會發生。

+0

'.length'屬性返回一個整數(數字原語),而不是一個對象,所以這裏沒有共享引用。 – nnnnnn 2012-07-23 11:54:27

+0

@nnnnnn所以,你可以解釋一下numberOfResultsVisible是如何得到0的。 – 2012-07-23 12:13:45

+0

根據OP剛剛發佈的評論,他試圖運行代碼_before_ DOM準備就緒,此時count實際上爲0.他說同樣的文檔就緒處理程序中的代碼有效。 – nnnnnn 2012-07-23 12:16:15

1

一個簡單的循環怎麼樣?

$(function(){ 
    var allElems = document.getElementsByTagName('div'); 
    var count = 0; 
    for (var i = 0; i < allElems.length; i++) 
    { 
     var thisElem = allElems[i]; 
     if (thisElem.style.display == 'block') count++; 
    } 
    alert(count); 
}); 

同樣在這裏: http://jsfiddle.net/E252r/8/

0

嘗試......我只是測試它

length = $('div[style~="display:block;"]').size();