チェックボックスがチェックされている場合、これを行います


126

チェックボックスをオンにすると、オンになり<p> #0099ffます。

チェックボックスをオフにすると、元に戻すことができます。

これまでのコード:

$('#checkbox').click(function(){
    if ($('#checkbox').attr('checked')) {
        /* NOT SURE WHAT TO DO HERE */
    }
}) 

1
「...チェックを外すと、同じ機能が無効になります。」-に渡される関数は.click()、クリックイベントで呼び出されます。したがって、「有効」と「無効」の意味がわかりません。チェックボックスがチェックされている場合、関数を呼び出すことができますa()。ただし、チェックボックスがオフの場合に呼び出すリバース関数を記述する必要があります。よくわかりません。
jensgram 2010年

あなたは、もちろん、可能.bind().unbind()するイベント別の要素には、チェックボックスの状態に基づいて。それはあなたが求めているものですか?
jensgram 2010年

1
スパム行為でごめんなさい。しかし、私が話していることの例を挙げました。
jensgram 2010年

1
私はこれが古い投稿であることを知っていますが、今、jQueryはprop()この質問が何に使用attr()したかったのかを使用します。そのprop()当時、メソッドは作成されていませんでした。this.checkedただし、回答はおそらくまだ役に立ちます。
トリシス2014年

回答:


235

私は使用 .change()this.checkedます:

$('#checkbox').change(function(){
    var c = this.checked ? '#f00' : '#09f';
    $('p').css('color', c);
});

-

使用上のthis.checked
アンディEを、我々はjQueryのを酷使する傾向がどのように偉大な書き込みアップを行っている:要素のアクセスプロパティへのjQueryの素晴らしいパワーを利用。記事では、具体的の使用を扱います.attr("id")が、場合に#checkbox ある<input type="checkbox" />要素の問題があるため、同じ$(...).attr('checked')(あるいは$(...).is(':checked'))対this.checked


48

これを試して。

$('#checkbox').click(function(){
    if (this.checked) {
        $('p').css('color', '#0099ff')
    }
}) 

時々、私たちはjqueryをやりすぎます。プレーンなJavaScriptでjqueryを使用すると、多くのことが実現できます。


34

「this.checked」が常に「オン」になっている場合があります。したがって、私はお勧めします:

$('#checkbox').change(function() {
  if ($(this).is(':checked')) {
    console.log('Checked');
  } else {
    console.log('Unchecked');
  }
});

私の場合、$(':checkbox')それを機能させるために変更しました;)
Pathros

21

異なる色でクラスを定義してから、クラスを切り替えるとよいでしょう

$('#checkbox').click(function(){
    var chk = $(this);
    $('p').toggleClass('selected', chk.attr('checked'));
}) 

このようにすれば、すべてのcssプロパティを指定する必要がないため(コードに境界線、テキストスタイルなどを追加したい場合など)、コードはよりクリーンになりますが、クラスを切り替えるだけです。


4
一般的なソリューションの場合は+1。$('#checkbox').attr('checked')ただし、それ#checkbox チェックボックスであることわかっている場合は、その理由はありません(そうでない場合、IDは誤解を招く可能性があります)。this.checkedしましょう。
jensgram 2010年

@jensgram @fcalderan +1ヒントをありがとう!スイッチ付きのtoggleClassを見たことがありません。役に立たないため、投稿を削除しています。うるさくて申し訳ありませんが、「#checkbox」を2回選択しなくても、この答えは100%完全だと思います。代わりに$(this)を使用しますか?またはジェンスグラムの解決策?
攻撃

もちろん@attackを使用する前に要素をキャッシュできます(今すぐコードを参照)。this.checkedは$(..)。attr( 'checked')よりも高速です

4

チェックボックスがチェックされていない、またはここでチェックされているというこの問題に対処するためのクレイジーな解決策が私のアルゴリズムです...グローバル変数を作成して、var check_holderとしましょう

check_holderには3つの状態があります

  1. 未定義の状態
  2. 0状態
  3. 1州

チェックボックスをクリックすると、

$(document).on("click","#check",function(){
    if(typeof(check_holder)=="undefined"){
          //this means that it is the first time and the check is going to be checked
          //do something
          check_holder=1; //indicates that the is checked,it is in checked state
    }
    else if(check_holder==1){
          //do something when the check is going to be unchecked
          check_holder=0; //it means that it is not checked,it is in unchecked state
    }
     else if(check_holder==0){
            //do something when the check is going to be checked
            check_holder=1;//indicates that it is in a checked state
     }
});

上記のコードは、チェックボックスがチェックされているかどうかを確認するために多くの状況で使用できます。その背後にある概念は、チェックボックスの状態を変数に保存することです。つまり、オン、オフの場合です。ロジックを使用して問題を解決できることを願っています。


1
解決策は確かにクレイジーですが、良い方法ではありません。はい、グローバル変数は今日の問題の解決に役立ちますが、明日はほぼ間違いなく問題になります。可能な限り回避するようにしてください。これは時間の99%です。グローバルな状態を気にせずにコードを推論することは不可能です。1つのグローバル変数は無害に見えるかもしれませんが、すぐに数十から数百になります。そこにいて、それを見て、それはきれいではありません。
bijancn 2016

3

このコードを確認してください:

<!-- script to check whether checkbox checked or not using prop function -->
<script>
$('#change_password').click(function(){
    if($(this).prop("checked") == true){ //can also use $(this).prop("checked") which will return a boolean.
        alert("checked");
    }
    else if($(this).prop("checked") == false){
        alert("Checkbox is unchecked.");
    }
});
</script>

1
$('#checkbox').change(function(){
   (this.checked)?$('p').css('color','#0099ff'):$('p').css('color','another_color');
});

1

おそらく、このコードを使用して、チェックボックスがオンまたはオフになっているときにアクションを実行できます。

$('#chk').on('click',function(){
    if(this.checked==true){
      alert('yes');
    }else{
      alert('no');
    }
});


0

最適な実装

$('#checkbox').on('change', function(){
    $('p').css('color', this.checked ? '#09f' : '');
});

デモ

$('#checkbox').on('change', function(){
    $('p').css('color', this.checked ? '#09f' : '');
});
<script src="https://code.jquery.com/jquery-1.12.2.min.js"></script>
<input id="checkbox" type="checkbox" /> 
<p>
    Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
    eiusmod tempor incididunt ut labore et dolore magna aliqua.
</p>
<p>
    Ut enim ad minim veniam, quis nostrud exercitation ullamco
    laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure
    dolor in reprehenderit in voluptate velit esse cillum dolore eu
    fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
    proident, sunt in culpa qui officia deserunt mollit anim id est
    laborum.
</p>


0

組み込みのイベントを使用してみませんか?

$('#checkbox').click(function(e){
    if(e.target.checked) {
     // code to run if checked
        console.log('Checked');

     } else {

     //code to run if unchecked
        console.log('Unchecked');
     }
});
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.