2017-06-19 26 views
0

トグルボタンを使用してnavbarの色を白から青に変更しようとしています。ボタンをクリックすると白から青に変わりますが、別の時間をクリックすると元に戻りません白色。関数は一度だけ実行します

ここは私の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'をインクリメントすることは決してないだろう」。 (関数()(){'新しい変数が再び作成されます。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"); 
 
\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ことができます。

$(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>

3/3) - またはクラストグル付き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

関連する問題