2

私がやろうとしているのは、#login と #signUp の両方が同時に表示されるのを避けることです。そのため、もう一方が現在表示されている場合は、最初にスライドさせてからスライドダウンを続けることができるかどうかを確認できますか?クリックされたトリガーの?

それは理にかなっていますか?

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

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

2 に答える 2

4

":visible" を使用:

$("#signUp").is(":visible");

于 2011-01-20T12:29:13.927 に答える
3

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

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

trueまたはのいずれかを返しますfalse。これを現在のコードに実装するには、次のようにします。

$("#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 が表示されているかどうかを確認し、表示されている場合は非表示にします。#signUp が非表示になった後、#login が表示されます。#signUp が表示されていない場合は、#login が表示されます。#logIn でも同じですが、その逆です。

于 2011-01-20T12:31:28.697 に答える