Nicholas Francis
Nicholas Francis

Reputation: 3693

Check, using jQuery, if an element is 'display:none' or block on click

I want to check and sort elements that are hidden. Is it possible to find all elements with attribute display and value none?

Upvotes: 319

Views: 836057

Answers (8)

john Smith
john Smith

Reputation: 17906

Just another shortcut i personally prefer more than .is() or .length:

if($('.myclass:visible')[0]){
   // is visible
}

which will just return undefined if no dom-element found for selector .myclass:visible

Upvotes: 1

Live demo

<div id="div" style="display: none"></div>
<button class="try">Try now</button>

<script type="text/javascript">
$(document).on('click','.try',function() {
var style = $('#div');
if (style.css("display") == "none") {
  alert("display not available");
}
});
</script>

Upvotes: 1

Luceos
Luceos

Reputation: 6720

There are two methods in jQuery to check for visibility:

$("#selector").is(":visible")

and

$("#selector").is(":hidden")

You can also execute commands based on visibility in the selector;

$("#selector:visible").hide()

or

$("#selector:hidden").show()

Upvotes: 24

Rana
Rana

Reputation: 324

Use this condition:

if (jQuery(".profile-page-cont").css('display') == 'block'){
    // Condition 
}

Upvotes: 13

Adil
Adil

Reputation: 148110

You can use :visible for visible elements and :hidden to find out hidden elements. This hidden elements have display attribute set to none.

hiddenElements = $(':hidden');
visibleElements = $(':visible');

To check particular element.

if($('#yourID:visible').length == 0)
{

}

Elements are considered visible if they consume space in the document. Visible elements have a width or height that is greater than zero, Reference

You can also use is() with :visible

if(!$('#yourID').is(':visible'))
{

}

If you want to check value of display then you can use css()

if($('#yourID').css('display') == 'none')
{

}

If you are using display the following values display can have.

display: none

display: inline

display: block

display: list-item

display: inline-block

Check complete list of possible display values here.

To check the display property with JavaScript

var isVisible = document.getElementById("yourID").style.display == "block";
var isHidden = document.getElementById("yourID").style.display == "none"; 

Upvotes: 682

dreamwagon
dreamwagon

Reputation: 1289

Yes, you can use the cssfunction. The below will search all divs, but you can modify it for whatever elements you need

$('div').each(function(){

    if ( $(this).css('display') == 'none')
    {
       //do something
    }
});

Upvotes: 33

Deepanshu Goyal
Deepanshu Goyal

Reputation: 2813

$("element").filter(function() { return $(this).css("display") == "none" });

Upvotes: 73

Barry Chapman
Barry Chapman

Reputation: 6780

$('#selector').is(':visible');

Upvotes: 11

Related Questions