#内容
前回の質問の続きになります。
https://teratail.com/questions/316153
#やりたいこと
ツリーチェックボックスがあり、この中の表示要素のみを対象として、
全選択したい
#状況
色々ソースを参考にして、ALLボタンの例を調べました。
https://agohack.com/checkbox-all-selected/
http://kanahebiz.hatenablog.com/entry/2015/10/08/121404
#分からないこと
http://kanahebiz.hatenablog.com/entry/2015/10/08/121404
を参考にして、class="category"を付与しました。
#直したいところ
このコードですと、ツリーの非表示のものにも、すべてチェックされてしまいます。
SLIDETOGGLEで表示されていない要素を、対象外にするには、
どうすればいいでしょうか?
引き続きjqueryに不慣れなため、ご教示いただければと思います。
JS
1 2$(document).ready(function () { 3 4 $('#category_all').on('click', function() { 5 $('.category').prop('checked', this.checked); 6 }); 7 8 $('.category').on('click', function() { 9 if ($('#categories :checked').length == $('#categories :input').length){ 10 $('#category_all').prop('checked', 'checked'); 11 }else{ 12 $('#category_all').prop('checked', false); 13 } 14 }); 15 16 $(':checkbox').change(function () { 17 $(this).closest('li').children('ul').slideToggle(); 18 }); 19 $('label').click(function(){ 20 $(this).closest('li').find(':checkbox').trigger('click'); 21 }); 22 23}); 24
html
1 2<input type="checkbox" id="category_all" name="category_all"> 3<label for="category_all">全て</label> 4<div id="categories"> 5 6<ul id="root1"> 7<li><input type="checkbox" id="item60" class="category"> 8<label for="item60">CAP</label> 9 <ul style="display: none"> 10 <li><input type="checkbox" id="item7" class="category"><label for="item7">GR</label> 11 <ul style="display: none"> 12 <li><input type="checkbox" id="item6" class="category"><label for="item6">GR-TC</label> 13 <ul style="display: none"> 14 <li><input type="checkbox" id="item1" class="category"><label for="item1">GR01TC</label> 15 16 以下、同様に階層のデータが続く 17 18 </li> 19 </ul> 20 </li> 21 </ul> 22</li> 23</ul> 24</li> 25</ul> 26 27</div> 28