Reputation: 9341
I have tabs like this.
<li id="singlechatpanel-1" style="visibility: hidden;">
//content
</li>
Trying to check it like this:
$(".subpanel a").click(function()
{
var chatterNickname = $(this).text();
if(!$("#singlechatpanel-1").is(':visible'))
{
alert("Room 1 is filled.");
$("#singlechatpanel-1").css({'visibility':'visible'});
$("#singlechatpanel-1 #chatter_nickname").html("Chatting with: " + chatterNickname);
}
If condition always returns false. How can I check visibility state of this div?
Upvotes: 42
Views: 168059
Reputation: 41103
You can use checkVisibility()
now.
document.querySelector('#somediv').checkVisibility()
That will return true if visible, false if not.
Upvotes: 0
Reputation: 5854
You can do it by any of these two ways:
$("#elementId").css('visibility')
and
$("#elementId").is(':visible');
if your element is visible then
$("#elementId").css('visibility') will return "visible"
and
$("#elementId").is(':visible') will return true
but if your element is NOT visible then
$("#elementId").css('visibility') will return undefined
and
$("#elementId").is(':visible') will return false
Upvotes: 1
Reputation: 2182
You can use .css()
to get the value of "visibility":
if( ! ( $("#singlechatpanel-1").css('visibility') === "hidden")){
}
Upvotes: 8
Reputation: 3700
if (!$('#singlechatpanel-1').css('display') == 'none') {
alert('visible');
}else{
alert('hidden');
}
Upvotes: 4
Reputation: 396
if element is hide by jquery then use
if($("#elmentid").is(':hidden'))
Upvotes: 17
Reputation: 741
$("#singlechatpanel-1").is(':visible');
$("#singlechatpanel-1").is(':hidden');
Upvotes: 57
Reputation: 144689
is(':visible')
checks the display
property of an element, you can use css
method.
if (!$("#singlechatpanel-1").css('visibility') === 'hidden') {
// ...
}
If you set the display
property of the element to none
then your if
statement returns true
.
Upvotes: 52
Reputation: 55740
You can use (':hidden') method to find if your div is visible or not.. Also its a good practice to cache a element if you are using it multiple times in your code..
$(".subpanel a").click(function()
{
var chatterNickname = $(this).text();
var $chatPanel = $("#singlechatpanel-1");
if(!$chatPanel.is(':hidden'))
{
alert("Room 1 is filled.");
$chatPanel.show();
$("#singlechatpanel-1 #chatter_nickname").html("Chatting with: " + chatterNickname);
}
});
Upvotes: 3
Reputation: 13864
Add your li
to a class, and do $(".myclass").hide();
at the start to hide it instead of the visibility style attribute.
As far as I know, jquery uses the display
style attribute to show/hide elements instead of visibility (may be wrong on that one, in either case the above is worth trying)
Upvotes: 1