2017-06-19 152 views
0

我试图改变导航栏颜色从白色到蓝色,反之亦然使用切换按钮。当我点击按钮时,它从白色变为蓝色,但是当我点击另一次它不会回头白色。功能只执行一次

这是我的jQuery代码。

$(".switch").click(function(){ 
    var numberOfClicks=0; 
    numberOfClicks++; 
    if(numberOfClicks%2 !=0){ 
    $("#nav-menu").css("background-color","blue"); 
    }else { 
    $("#nav-menu").css("background-color","white"); 
    } 

    }); 

这里是切换按钮的代码

<label class="switch"> 
     <input type="checkbox"> 
     <div class="slider" id="toggleButton"></div> 
    </label> 
+4

您声明'每个按钮被点击时numberOfClicks' - 它永远不会增加过去1 – tymeJV

+0

移动'numberOfClicks'到'$之外(”。开关“)。click(function(){'new变量再次被创建n n –

回答

0

您声明numberOfClicks您单击处理程序。这意味着每次按钮被点击时,变量都会被再次初始化为零。它始终为1

相反,做这样的事情:

var numberOfClicks=0; 

$(".switch").click(function(){ 
    numberOfClicks++; 
    if(numberOfClicks%2 !=0){ 
    $("#nav-menu").css("background-color","blue"); 
    }else { 
    $("#nav-menu").css("background-color","white"); 
    } 

    }); 
+0

是的,我完全忽略它,基本上每次调用函数时都会将numberOfClicks重置为零。所以最大值为1. – Stanimir

0

试试我的回答,您可以切换类来改变背景颜色

<!DOCTYPE html> 
 
<html lang="en"> 
 
<head> 
 
    <title>Bootstrap Example</title> 
 
    <meta charset="utf-8"> 
 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
 
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> 
 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
 
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> 
 
</head> 
 
<style> 
 
.blue{background-color:blue !important}; 
 
.white{background-color:white !important}; 
 
</style> 
 

 
<body> 
 

 
<div class="navbar navbar-preheader navbar-default" role="navigation"> 
 
     <div class="container-fluid"> 
 
      <div class="navbar-header"> 
 
      <button type="button" class="navbar-toggle white collapsed" data-toggle="collapse" data-target=".navbar-collapse"> 
 
       <span class="sr-only">Toggle navigation</span> 
 
       <span class="icon-bar"></span> 
 
       <span class="icon-bar"></span> 
 
       <span class="icon-bar"></span> 
 
      </button> 
 
      <a class="navbar-brand" href="#">Project name</a> 
 
      </div> 
 
      <div class="navbar-collapse collapse"> 
 
      <ul class="nav navbar-nav"> 
 
       <li class="active"><a href="#">Link</a></li> 
 
       <li><a href="#">Link</a></li> 
 
       <li><a href="#">Link</a></li> 
 
       <li class="dropdown"> 
 
       <a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown <span class="caret"></span></a> 
 
       <ul class="dropdown-menu" role="menu"> 
 
        <li><a href="#">Action</a></li> 
 
        <li><a href="#">Another action</a></li> 
 
        <li><a href="#">Something else here</a></li> 
 
        <li class="divider"></li> 
 
        <li class="dropdown-header">Nav header</li> 
 
        <li><a href="#">Separated link</a></li> 
 
        <li><a href="#">One more separated link</a></li> 
 
       </ul> 
 
       </li> 
 
      </ul> 
 
      <ul class="nav navbar-nav navbar-right"> 
 
       <li class="active"><a href="./">Default</a></li> 
 
       <li><a href="../navbar-static-top/">Static top</a></li> 
 
       <li><a href="../navbar-fixed-top/">Fixed top</a></li> 
 
      </ul> 
 
      </div><!--/.nav-collapse --> 
 
     </div><!--/.container-fluid --> 
 
     </div> 
 
<script> 
 
$('.navbar-toggle').click(function(){ 
 
$('.navbar-toggle').toggleClass('blue white'); 
 
}); 
 
</script> 
 
</body> 
 
</html>

+0

您的代码工作正常,但不知何故,当我在单独的css文件中设置蓝色和白色课程时无法工作。 – Stanimir

+0

老兄它工作正常,即使我们宣布这些类在单独的css文件,我也试过了,它工作正常,尝试一次 –

+0

我删除并再次写入CSS链接,它的工作 – Stanimir

0

1/3) - 您可以检查按钮是否被选中。
如果选中,胜于蓝,如果没有,那么白 - :

$(document).ready(function(){ 
 

 
$(".switch").click(function(){ 
 
    var nav_menu = $("#nav-menu"); 
 
    if(nav_menu.hasClass("blue")) { 
 
\t  nav_menu.removeClass("blue") 
 
    } 
 
    else { 
 
\t  nav_menu.addClass("blue"); 
 
    } 
 
    }); 
 
});
.blue { 
 
    background-color: blue; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 
 

 
<label class="switch"> 
 
<input type="checkbox"> 
 
<div class="slider" id="toggleButton"></div> 
 
</label> 
 

 
<div id="nav-menu">nav-menu</div>

$(document).ready(function(){ 
 

 
$(".switch").click(function(){ 
 
    var nav_menu = $("#nav-menu"); 
 
\t if($(this).children("input").prop("checked")) { 
 
\t nav_menu.addClass("blue"); 
 
\t } 
 
\t else { 
 
\t nav_menu.removeClass("blue") 
 
\t } 
 
    }); 
 
});
.blue { 
 
    background-color: blue; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 
 

 
<label class="switch"> 
 
<input type="checkbox"> 
 
<div class="slider" id="toggleButton"></div> 
 
</label> 
 

 
<div id="nav-menu">nav-menu</div>

2/3)或者你也可以当元素有类blue或不ckeck

3/3) - 或者sho带班切换RTEST方式:

$(document).ready(function(){ 
 

 
    $(".switch").click(function(){ 
 
    $("#nav-menu").toggleClass("blue"); 
 
    }); 
 
    
 
});
.blue { 
 
    background-color: blue; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 
 

 
<label class="switch"> 
 
<input type="checkbox"> 
 
<div class="slider" id="toggleButton"></div> 
 
</label> 
 

 
<div id="nav-menu">nav-menu</div>

+0

第一个完美的作品。它真的做了这份工作.Hvala – Stanimir