2016-04-11 23 views
9

入力チェックボックスをオンにすると、<div>にメッセージを追加します。しかし、どういうわけか私のコードは動作していないようです。ここに何もないのですか?ブートストラップを使用しているhttp://jsbin.com/petewadeho/edit?html,outputこのBootstrapチェックボックスがjQueryで動作しないのはなぜですか?

<script src="https://code.jquery.com/jquery.min.js"></script> 
 
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script> 
 
<script src="https://gitcdn.github.io/bootstrap-toggle/2.2.2/js/bootstrap-toggle.min.js"></script> 
 
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" type="text/css" /> 
 
<link href="https://gitcdn.github.io/bootstrap-toggle/2.2.2/css/bootstrap-toggle.min.css" rel="stylesheet"> 
 

 
    <input id="inp" type="checkbox" data-toggle="toggle" /> 
 

 
    <div id="out"></div> 
 

 
    <script> 
 
    $('#inp').click(function() { 
 
     if (this.checked) { 
 
     $("#out").append("hey"); 
 
     } 
 
    }); 
 
    </script>

答えて

8

、チェックボックス要素のDOM構造を変更している -

は、ここで私はこれまで持っているものへのリンクです。

$('#inp').change(function(){ 
    if (this.checked) { 
     $("#out").append("hey"); 
    } 
}); 

http://jsbin.com/kenekekose/1/edit?html,output

1

次のコードを参照してください:あなたは代わりに.click().change()イベントを使用する必要があります。ここで私はonchange関数を使用しました。

<script> 
    $('#inp').change(function(){ 
     if ($('#inp').prop("checked")) { 
      $("#out").append("hey"); 
     } 
    }); 
    </script> 
+2

はなぜ '' $(「#のINP」)を繰り返すんが、それは、DOM要素を削除取得することはできませんか? '$(this)'または 'this'を使用してください。 – mplungjan

+0

はい、これも使用できます。初心者のためにも、$(this)を理解するのはちょっと難しいことでした。だからこそ私は '$( '#inp')'を直接使用しています。 –

+0

私は初心者のベストプラクティスを最初から提供することを強くお勧めします – mplungjan

1

Bootstrapがチェックボックスを変更すると、設定しているクリックリスナーが削除されています。

次のコードでは、身体にリスナーを追加しますので、ブートストラップは、その作業

$('body').on('click', '#inp', function(){ 
    //do append 
}) 
関連する問題