用一个按钮显示/隐藏div元素

时间:2012-10-30 18:43:22

标签: jquery html

我最近一直潜入jquery,并喜欢在触发事件时如何显示/隐藏元素。我尝试在我的测试网站上添加一个简单的功能,当点击登录按钮时会显示登录表单,然后如果再次点击按钮则隐藏表单;我使用的jquery函数只工作一次(当我单击按钮并显示表单时)但是在显示表单后如果我再次尝试单击该按钮则没有任何反应。

Jquery代码:

function displayLoginBox(){


if ($("#login_Box_Div:hidden")){

        $("#login_Box_Div").show();
        $("#buttonLogin").css('color', '#FF0');

}
else if($("#login_Box_Div:visible")){

        $("#login_Box_Div").hide(); 
        $("#buttonLogin").css('color','white');
}
}

HTML按钮代码:

<h3> <a href= "#">Pictio  </a> <button id = "buttonLogin" onclick = "displayLoginBox()">LogIn</button></h3>

HTML div代码:

<div id = "login_Box_Div"> 
        <form name = "myform" > 
            <input type = "text" name = "username" placeholder = "Username"  />
            <input type = "password" name = "password" placeholder= "Password" />
            <input type = "submit" id = "submitLogin" />
        </form>

</div>

我觉得jquery脚本只运行一次然后完成,但我可能错了。

9 个答案:

答案 0 :(得分:11)

尝试使用.toggle()

$('#buttonLogin').on('click', function(e){
    $("#login_Box_Div").toggle();
    $(this).toggleClass('class1')
});​

.class1
{
     color: orange;
}​

您可以使用toggleClass()来切换按钮的类

<强> Check FIDDLE

答案 1 :(得分:5)

无需使用内联javascript。

LIVE DEMO

$('#buttonLogin').click(function(){
   $('#login_Box_Div').toggle();
});

答案 2 :(得分:2)

你可以试试这个

$('#buttonLogin').on('click', function(e){
    $("#login_Box_Div").toggle();
    var color=$("#login_Box_Div").is(':hidden') ? '#FF0' : 'white';
    $("#buttonLogin").css('color', color);
});

Example

更新

或者使用togglrClass,您可以试试这个

$('#buttonLogin').on('click', function(e){
    $("#login_Box_Div").toggle();
    $("#buttonLogin").toggleClass('whiteColor yelolowCollor');
});

Example

答案 3 :(得分:0)

尝试使用jQuery的toggle函数来完成此任务

答案 4 :(得分:0)

JS

function displayLoginBox(elem){

 $("#login_Box_Div").toggle();
 $(elem).toggleClass('login_clicked');

}

CSS

#buttonLogin{color: #fff;}
.login_clicked{color: #FF0 !important;}

HTML

<h3> <a href= "#">Pictio  </a> <button id = "buttonLogin" onclick = "displayLoginBox(this)">LogIn</button></h3>

此方法还会更改登录按钮颜色。

答案 5 :(得分:0)

Try this:

function displayLoginBox(){
    $("#login_Box_Div").toggle(function(e) {
        if ($(this).is(":visible")) {
            $("#login_Box_Div").show();
            $("#buttonLogin").css('color', '#FF0');
        }
        else {
            $("#login_Box_Div").hide(); 
            $("#buttonLogin").css('color','white');
        };
    });
}

答案 6 :(得分:0)

:hidden:visible选择器是过滤器,而不是布尔方法。

这意味着:当你在测试时

if ($("#login_Box_Div:hidden")){

...你从$("#login_Box_Div:hidden")获得的是一个jQuery对象 - 它总是存在,并且总是会返回true,即使它没有任何内容。

您需要做的是测试该jQuery对象的.length。如果它为零,则jQuery对象为空:

if ($("#login_Box_Div:hidden").length){ // zero is false, greater than zero is true

http://jsfiddle.net/mblase75/ThwFs/

或者,使用.is(selector)方法,该方法返回布尔值(true / false):

if ($("#login_Box_Div").is(":hidden")){

http://jsfiddle.net/mblase75/ThwFs/2/

虽然有很多方法可以简化您的代码,但这是您遇到的实际问题的答案。

答案 7 :(得分:0)

使用$('login_Box_Div').is(':hidden')$('login_Box_Div').is(':visible')

您也不应该使用内联JavaScript。 这是一个工作http://jsfiddle.net/MrsW8/

的jsfiddle

答案 8 :(得分:0)

如果您愿意,可以使用此代码,它帮助我实现了相同的目标。

$("button").click(function(){
$("div").toggle(function(e) {
        if ($(this).is(":visible")) {
            $("div").show();
            $("button").css('color', 'red');
        }
        else {
            $("div").hide(); 
            $("button").css('color','white');
        };
    });
});

我只使用一个div和一个没有id的按钮。 希望它有助于你的事业。