質問: ### 前提・実現したいこと 現在、下記のソースのようにclass="checkAll"を持つチェックボックスをチェックすると class="checkAll"のidと同じclassを持つチェックボックスが連動してチェックされます。 今回実現したい動きとして、「メールアドレス1」「メールアドレス2」のチェックボックスのいずれかを クリックした時に「名前」(class="checkAll")のチェックボックスが連動してチェックされる動きを追加したいと考えております。 つまり「名前」(class="checkAll")はどれかのチェックボックスがチェックされたら必ず、連動してチェックされる動きとなります。 現状phpの動きとして、チェックボックスでチェックした要素をPOSTして、次のPHPでデーターベースからデータを持ってきて表示するため、idである['id_mbr']は必ずチェックする必要があります。 ループの中でなければ、固有のIDなどで連動させればできると思いますが、当方の知識不足で ループ内での動きを実現する動きが思いうかばないのが現状です。また、出来ましたらjavascriptで 連動する動きをとれたらと思います。 稚拙な説明と、稚拙な質問かもしれませんが、何卒お力をお貸し頂ければと思います。 ### 該当のソースコード ``` $value) { ?> 名前 " class="delete"> メールアドレス1 " class="delete">メールアドレス2 ```
回答: これはcheckAllが未チェックの場合、メール1とメール2の両方がチェックされたらcheckAllをチェックし、 逆にcheckAllがチェックされてる場合メール1とメール2のいずれかのチェックが外れたら、checkAllのチェックもはずしたい という意味でしょうか? 追記1 ==== とりあえず上記条件で ``` $(function(){ $('.checkAll').click(function() { $('.' + this.id).prop('checked', this.checked); }); $('input[type=checkbox]').click(function() { if($('#' + $(this).prop('className'))[0]){ var flg=true; $('.' + $(this).prop('className')).each(function(){ if(!$(this).prop('checked')){ flg=false}; }); $('#' + $(this).prop('className')).prop("checked",flg); } }); }); ``` ``` $data=[ array("id_mbr"=>"a0","email_1_mbr"=>"a1","email_2_mbr"=>"a2"), array("id_mbr"=>"b0","email_1_mbr"=>"b1","email_2_mbr"=>"b2"), array("id_mbr"=>"c0","email_1_mbr"=>"c1","email_2_mbr"=>"c2"), ]; foreach ($data as $key => $value) { print <<名前 メールアドレス1 メールアドレス2 eof; } ``` 追記2 ==== ご希望と思われる仕様バージョン ``` $(function(){ $('.checkAll').click(function() { $('.' + this.id).prop('checked', this.checked); }); $('input[type=checkbox]').click(function() { if($('#' + $(this).prop('className'))[0]){ var flg=false; $('.' + $(this).prop('className')).each(function(){ if($(this).prop('checked')){ flg=true}; }); $('#' + $(this).prop('className')).prop("checked",flg); } }); }); ```