jquery检测当前是否显示另一个div

时间:2011-01-20 12:25:10

标签: jquery if-statement slidetoggle

我试图做的是避免同时显示#login和#signUp,所以如果当前正在显示另一个,我可以做一个检查,首先将其向上滑动,然后继续点击被点击的触发器?

这有意义吗?

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

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

2 个答案:

答案 0 :(得分:4)

使用“:visible”:

$( “#注册”)是( “:可见”);

答案 1 :(得分:3)

您可以在使用is(":visible")调用slideToggle之前检查其他元素是否可见,您在选择器上调用is方法并在is方法中指定:visible选择器:

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

它将返回truefalse。要在当前代码中实现这一点,您可以这样做:

$("#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也是一样,但反过来。