0

Hello I am trying to the get the count of div which has style display block.

<div class="wrapper">
  <div class="sub" style="display:none">text</div>
  <div class="sub" style="display:block">text</div>
  <div class="sub" style="display:none">text</div>
  <div class="sub" style="display:block">text</div>
  <div class="sub" style="display:none">text</div>
</div>

jQuery -

$(document).ready(function(){
    $(".wrapper").each(function(){
        var wrapLength = $('.sub').length;
        $(".sub").each(function(){
            if($(".sub").css("display","none")){
                wrapLength = wrapLength - 1;
            }
        }); 
        alert(wrapLength);
    }); 
});

Now I am getting the count as 0 but I should get the count as 2. Please help.

Albert Einstein
  • 7,472
  • 8
  • 36
  • 71
Akshay
  • 401
  • 1
  • 5
  • 29
  • Possible duplicate of [Jquery - How to get the style display attribute "none / block"](https://stackoverflow.com/questions/1875403/jquery-how-to-get-the-style-display-attribute-none-block) – i alarmed alien Jul 27 '18 at 10:03

4 Answers4

2

You can use jQuery .filter() method combined with Javascript style property for that :

let shownSubs = $('.sub').filter((_,e) => e.style.display == 'block');
console.log(shownSubs.length);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="wrapper">
  <div class="sub" style="display:none">text</div>
  <div class="sub" style="display:block">text</div>
  <div class="sub" style="display:none">text</div>
  <div class="sub" style="display:block">text</div>
  <div class="sub" style="display:none">text</div>
</div>
Zenoo
  • 12,670
  • 4
  • 45
  • 69
1

You can simply do $('.sub:hidden').length to get display:none and $('.sub:visible').length; element count.

$(document).ready(function(){
    $(".wrapper").each(function(){
        var wrapLength = $('.sub:hidden').length;
        console.log(`Hidden count: ${wrapLength}`);
        var visibleLength = $('.sub:visible').length;
        console.log(`Visible count: ${visibleLength}`)
    }); 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="wrapper">
  <div class="sub" style="display:none">text</div>
  <div class="sub" style="display:block">text</div>
  <div class="sub" style="display:none">text</div>
  <div class="sub" style="display:block">text</div>
  <div class="sub" style="display:none">text</div>
</div>
Albert Einstein
  • 7,472
  • 8
  • 36
  • 71
0
$(document).ready(function() {
            var count_none = 0;
            $(".sub").each(function() {
                    var style_el = $(this).attr('style');
                    if (style_el == 'display:none') {
                        count_none++;
                    }
                });
                console.log(count_none);
            });
Dinesh Suthar
  • 853
  • 1
  • 17
  • 41
0

$(function(){
var count=0;
$(".sub").each(function(){
if($(this).css("display")=='block'){
count++;
}
})
alert("total display blocked items :"+count);

})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="wrapper">
  <div class="sub" style="display:none">text</div>
  <div class="sub" style="display:block">text</div>
  <div class="sub" style="display:none">text</div>
  <div class="sub" style="display:block">text</div>
  <div class="sub" style="display:none">text</div>
</div>

hope this solves your query.

Kaleem Nalband
  • 687
  • 7
  • 21