jQuery count div有display:block

时间:2012-07-23 11:35:12

标签: jquery

我有div元素,如下图所示。我想要将css显示为块的div计数。

我尝试了什么:

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

9 个答案:

答案 0 :(得分:1)

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

请参阅演示:http://jsfiddle.net/E252r/2/

答案 1 :(得分:1)

不要内联样式 - 添加另一个类:

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

然后您可以使用以下方法过滤它们:

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

你的css中你有:

 div.plblock {display:block;}

这是一种更清洁的方法。

答案 2 :(得分: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/

答案 3 :(得分:0)

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

答案 4 :(得分:0)

您正在寻找getComputedStyle()财产。我听说它在IE中不可用,它可能有自己的替代功能。

答案 5 :(得分:0)

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

  } else {

  }

答案 6 :(得分:0)

你说它在警报上工作而不是在你做警报的地方尝试

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

当您将任何事物分配给新变量时,它会共享引用,如果引用内存的值发生更改,则新变量也会更改。通过这段代码,它不会发生。

答案 7 :(得分:0)

试试这个...我刚试过它

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

答案 8 :(得分:0)

此代码也对我有用:

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