2011-09-26 96 views

回答

1
根据 jQuery docs on :hidden

元素与visibility:hidden的被认为是可见的,因为他们仍然在布局消费空间

所以你最好检查价值。

if ($('#1').css('visibility')==='hidden') 

或使用其他方法

+0

啊谢谢!我发现布局中的空间仍然消耗殆尽,但没有想到要检查这个值!我将在稍后尝试并接受! – RegexCommander

+0

非常感谢! – RegexCommander

1

该问题的任何帮助,与visibility:hidden为可见的:hidden伪选择对待元素,因为他们仍然占用空间在页面上。从jQuery文档:

元素与visibility:hidden的或不透明度:0被认为是 可见的,因为他们仍然在消耗布局空间。

相反,你可以检查CSS属性本身的价值:

if($('#1').css("visibility") === "hidden") { 
    $('#1').css('visibility','visible'); 
} 
else { 
    $('#1').css('visibility','hidden'); 
} 
+0

谢谢您的回答。自从他第一次接受Einacio的回答后,我无法赞赏你,因为这个帐户是新的,但也许别人会! – RegexCommander

0

所有:hidden选择的首先是不适合你:

元素与visibility:hidden的或不透明:0被认为是可见的,因为它们仍然占用布局空间。

您可以使用:visible选择,但它的工作原理,只有当要素无形和display:none。在你的情况下,你需要检查css属性:

另外,请注意,visibility:hidden保留元素的空间,display:none - 不是;

如果您不需要预留空间为它我建议使用:

 $('#text').click(function() { 
      $('#2').toggle(); 
     }); 

代码:http://jsfiddle.net/2v4aJ/6/

+0

':隐藏'也检查元素的高度宽度为0:或显示:无 – Einacio

+0

感谢您的补充,我已更新答案 – Samich

+0

预留空间:隐藏是故意为我的应用程序,谢谢! – RegexCommander

0

使用toggle命令。

$('#1').toggle(true); //show 
$('#1').toggle(false); //hide 
$('#1').toggle(); //flip 
+0

切换更改'display'属性。 RegexCommander正在与知名度 – Einacio