2011-01-20 9 views
2

#loginと#signUpの両方を同時に表示しないようにしたいのですが、もう一方が現在表示されている場合にチェックができますまずそれをスライドさせてから、クリックされたトリガーの滑り止めを続けますか?jqueryは現在他のdivが表示されているかどうかを検出します

それは意味がありますか?

    $("#loginBtn").click(function(){ 
         $("#login").slideToggle(); 
         return false; 
        }); 

        $("#signUpBtn").click(function(){ 
         $("#signUp").slideToggle(); 
         return false; 
        }); 

答えて

3

あなたはis(":visible")を使用してslideToggleを呼び出す前に、他の要素が表示されているかどうかを確認することができ、あなたは、セレクタのisメソッドを呼び出し、方法であるに:visibleセレクタを指定します。

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

それはどちらかが返されますtrueまたはfalse。あなたの現在のコードでこれを実装するには、次のようにそうするでしょう:#signUpが見える最初のものである場合

$("#loginBtn").click(function(){ 
    if($("#signUp").is(":visible")) $("#signUp").slideToggle("fast", slideLoginCallback); 
    else slideLoginCallback(); 

    function slideLoginCallback(){ 
     $("#login").slideToggle(); 
    } 

    return false; 
}); 

$("#signUpBtn").click(function(){ 
    if($("#login").is(":visible")) $("#login").slideToggle("fast", slideSignUpCallback); 
    else slideSignUpCallback(); 

    function slideSignUpCallback(){ 
     $("#signUp").slideToggle(); 
    } 

    return false; 
}); 

だから、これはチェックし、それがあれば、それはそれを非表示になります。 #signUpが非表示になった後、#loginが表示されます。 #signUpが表示されていない場合は#loginが表示されます。 #logInの場合も同じですが、逆の場合は同じです。

+0

私はこの1つに行ってきました! – benhowdle89

4

使用 ":目に見える":

$( "#サインアップ")( "可視")です。

関連する問題