Javascript JQuery,找出什么';它是可见的并隐藏它

Javascript JQuery,找出什么';它是可见的并隐藏它,javascript,jquery,Javascript,Jquery,我的JQuery执行以下操作: $(document).ready(function(){ $('#settings_button').click(function(){ if ($('div#edit_profile:visible')) { $('#edit_profile').fadeOut(function() {$('#account_settings').fadeIn();}); } else if ($('div#leave:visible')) { $('#leave')

我的JQuery执行以下操作:

$(document).ready(function(){


$('#settings_button').click(function(){ 

if ($('div#edit_profile:visible'))
{
$('#edit_profile').fadeOut(function() {$('#account_settings').fadeIn();});
}
else if ($('div#leave:visible'))
{
$('#leave').fadeOut(function() {$('#account_settings').fadeIn();});
}
}); 



$('#edit_button').click(function(){ 

if($('div#account_settings:visible'))
{
$('#account_settings').fadeOut(function() {$('#edit_profile').fadeIn();});
}
else if ($('div#leave:visible'))
{
$('#leave').fadeOut(function() {$('#edit_profile').fadeIn();});
}

}); 


}); 
这种工作,只是,虽然“离开”div是可见的,但它不会隐藏它。我如何检测它是否可见,然后如果是,它将淡出。我试过了,似乎不起作用。最好的方法是什么?我希望我解释得足够好。 -萨尔

编辑,我找到了我的答案:

$(document).ready(function(){


$('#settings_button').click(function(){ 

if ($('div#edit_profile').is(':visible'))
{
$('#edit_profile').fadeOut(function() {$('#account_settings').fadeIn();});
}
else if ($('div#leave').is(':visible'))
{
$('#leave').fadeOut(function() {$('#account_settings').fadeIn();});
}
}); 



$('#edit_button').click(function(){ 

if($('div#account_settings').is(':visible'))
{
$('#account_settings').fadeOut(function() {$('#edit_profile').fadeIn();});
}
else if ($('div#leave').is(':visible'))
{
$('#leave').fadeOut(function() {$('#edit_profile').fadeIn();});
}

}); 


}); 

正如您已经认识到的,您希望
.is(':visible')
符号。我只是想补充一下,这是一个提取函数的绝佳机会:

function toggleIfVisible(hide, show) {
    var $hide = $(hide);
    if($hide.is(':visible')) {
        $hide.fadeOut(function() { $(show).fadeIn() });
    }
}

toggleIfVisible('#edit_profile', '#account_settings');
编辑:完成后,您甚至可以将其作为jQuery方法:

$.fn.hideAndShow = function(other) {
    if(this.is(':visible')) {
        this.fadeOut(function() { $(other).fadeIn() });
    }
}

$("#edit_profile").hideAndShow("#account_settings");

正如您已经认识到的,您希望
.is(':visible')
符号。我只是想补充一下,这是一个提取函数的绝佳机会:

function toggleIfVisible(hide, show) {
    var $hide = $(hide);
    if($hide.is(':visible')) {
        $hide.fadeOut(function() { $(show).fadeIn() });
    }
}

toggleIfVisible('#edit_profile', '#account_settings');
编辑:完成后,您甚至可以将其作为jQuery方法:

$.fn.hideAndShow = function(other) {
    if(this.is(':visible')) {
        this.fadeOut(function() { $(other).fadeIn() });
    }
}

$("#edit_profile").hideAndShow("#account_settings");

等待我是个白痴!我需要使用:($('div#edit#u profile').is(':visible'))如果这是您的解决方案,您可以将其作为答案发布。我不会:(我的重复次数少于100次,因此我无法回答8小时。答案是如果($('div#account#u settings')。is(':visible'))我必须使用is()函数。抱歉,浪费了时间:(@Silas:你总是写没有任何缩进的代码吗?这会让阅读变得非常困难!除此之外,请将你的答案作为答案发布,而不是将其编辑到你的问题中!等等!我是个白痴!我需要使用:($('div#edit_profile')。is(':visible'))如果这是你的解决方案,你可以将其作为答案发布。我不会:(我的重复次数少于100次,因此我在8小时内无法回答。答案是if($('div#account_settings')。is(':visible'))我必须使用is()函数。很抱歉浪费了时间:(@Silas:你写的代码总是没有缩进吗?这会让阅读变得非常困难!除此之外,请将你的答案作为答案发布,而不是将其编辑到你的问题中!