假设我有2个元素,div1和div2。当我点击div1时,div2应该在.toggleClass()
和visibility=hidden
之间visibility=visible
。这很好用。但是当我尝试这个时:
if($('#div2').css('visibility') == 'hidden') {
$('#div1').replaceWith('<span> Duh </span>');
}
什么都没发生。如果我将'hidden'
更改为'visible'
,那就可以了。但这不是我想要的。我知道当使用visibility = hidden时,元素仍然被认为是可见的,但是不能.css('visibility') == 'hidden'
检查元素的样式是否设置为visibility = hidden?在我的情况下应该是真的。
我也试过
if($('#div2').hasClass('visHidden')) {
$('#div1').replaceWith('<span> Duh </span>');
}
但没有任何反应。
问题是,当DOM加载时,没有设置visHidden和visVisible类吗?因为如果单击元素,我只使用jQuery设置它们。如果是这样的话有办法吗?我不能使用显示属性。
答案 0 :(得分:-1)
您应该尝试使用.is()
jquery
方法检查可见性。
$(element).is(":visible") // Checks for display:[none|block], ignores visible:[true|false]
在你的情况下,
if(!$('#div2').is(":visible")) {
$('#div1').replaceWith('<span> Duh </span>');
}
答案 1 :(得分:-1)
这是你的答案
if($('#div2').is(':visible')) {....}