2011-07-08 4 views
0

を選択:jQueryのチェックボックスマルチIは、複数のチェックボックスを選択するための次のコードを持って

$(document).ready(function() { 

    /* All groups functionality */ 
    $(".allGroups").change(function() { 
     var checked = this.checked; 
     if (checked == true) { 
      $(".group").attr("checked", true); 
      $(".c").attr("checked", true); 
     } 
     if (checked == false) { 
      $(".group").attr("checked", false); 
      $(".c").attr("checked", false); 
     } 
    }) 

    /* Individual Group functionality */ 
    $(".group").change(function() { 
     var checked = this.checked; 
     var number = this.value 
     var set = '.group-' + number; 
     $(set).attr("checked", checked); 
    }) 


}) 

私は '接点' クラスcgroup-#を与えました。グループはクラスgroupを取得します。 すべてを選択するチェックボックスは.allGroups

になります。すべてチェックしないと「すべてを選択」チェックボックスがオフになっています。

はここまでjsFiddleを手に入れた:http://jsfiddle.net/nqHtu/1/

答えて

1

フィドル:http://jsfiddle.net/nqHtu/4/

私はまた、いくつかの書式設定の改善を行いました。注意事項:

    if文の中で "true"または "false"と比較する必要はありません。結果は常に比較しているものです! (true == true) - >(true)です。
  1. attrの代わりにpropを使用してください。 http://api.jquery.com/prop/
  2. if/elseステートメントの両端のコードブロックを同じで、ブール値を必要とするのではなく、変数にbool結果を代入して渡すだけです。

ここで更新されたJavaScriptです:

$(document).ready(function() { 
    /* All groups functionality */ 
    var $allGroups = $(".allGroups").change(function() { 
     var checked = this.checked; 
     $(".group").prop("checked", checked); 
     $(".c").prop("checked", checked); 
    }) 

    /* Individual Group functionality */ 
    $(".group").change(function() { 
     var checked = this.checked; 
     var number = this.value 
     var set = '.group-' + number; 
     $(set).prop("checked", checked); 
     var allchecked = $(".group:checked").length == $(".group").length; 
     $allGroups.prop('checked', allchecked); 
    }); 
}); 
+0

事実上同じコードで8分後に投稿され、受け入れられますか?それをどうやって管理したの? :) – AlienWebguy

+0

かなりの番号のリストで書式設定の問題を特定し、行数を大幅に削減し、コードの明瞭度を向上させ、「ここにリンクの説明を入力」とは言わないリンクを持ち、コードブロック全体を投稿しました。ちょうど推測。 –

+0

あなた自身がとても高く評価されてうれしいです。それを笑い続けてください。 – AlienWebguy

1

は、ここに行く:http://jsfiddle.net/AlienWebguy/nqHtu/2/

は、単に.group変更イベントにこれを追加しました:

if($(".group:checked").length < $(".group").length) 
{ 
     $(".allGroups").prop("checked",false); 
} 

また、ただ頭を、「確認します"属性ではなくプロパティであるため、prop()ではなく操作したいでしょうattr()

1
$(".c").change(function() { 
    if(! this.checked) { 
     $(".allGroups").attr("checked", false); 
    } 
}); 
1

自体 チェックを解除チェックボックス「すべてを選択」ではないすべてはこれが我々が考慮していると仮定している

もうチェックされたとき連絡先グループのチェックボックスもチェックされていません。

$(":checkbox").change(function() { 
    if ($(":checked").length < $(":checkbox").length) { 
     $(".allGroups").prop("checked", false); 
    } 
}); 
関連する問題