#javascript #php #html #jquery
Вопрос:
У меня есть несколько флажков, разбросанных по нескольким разделам.Во всех отдельных div у меня есть флажок «выбрать все». Когда этот флажок установлен, я пытаюсь выбрать все остальные, связанные с этим пертукулярным div, и когда вы снимаете флажок «выбрать все», он отменяет выбор остальных.
<div class="actions" id="actions" title="Actions">
<div>
<div><input type="checkbox" name="action" id="" class="" value="0" /> Select All</div><br />
<div><input type="checkbox" name="action" id="" class="" value="1" /> <?php echo $lang["actions"][1]; ?></div><br />
<div><input type="checkbox" name="action" id="" class="" value="2" /> <?php echo $lang["actions"][2]; ?></div><br />
<div><input type="checkbox" name="action" id="" class="" value="3" /> <?php echo $lang["actions"][3]; ?></div><br />
</div>
<div>
<div><input type="checkbox" name="action" id="" class="" value="26" />Select All</div><br />
<div><input type="checkbox" name="action" id="" class="" value="27" /> <?php echo $lang["actions"][27]; ?></div><br />
<div><input type="checkbox" name="action" id="" class="" value="28" /> <?php echo $lang["actions"][28]; ?></div><br />
<div><input type="checkbox" name="action" id="" class="" value="29" /> <?php echo $lang["actions"][29]; ?></div><br />
<div><input type="checkbox" name="action" id="" class="" value="30" /> <?php echo $lang["actions"][30]; ?></div><br />
<div><input type="checkbox" name="action" id="" class="" value="31" /> <?php echo $lang["actions"][31]; ?></div>
</div>
</div>
Ответ №1:
Вот пример
В следующий раз покажите нам хотя бы минимум кода, чтобы мы могли помочь вам понять
$('.selectAll').on('click',function(){
let isSelected = $(this).is(':checked');
$(this).parents('.myDiv').find('input[type="checkbox"]').each(function(){
if( isSelected )
$(this).prop('checked',true);
else
$(this).prop('checked',false);
})
})
$('input:not(".selectAll")').on('click',function(){
let selectAllChecked = $(this).parents('.myDiv').find('.selectAll')[0].checked;
let numberInput = $(this).parents('.myDiv').find('input').not('.selectAll').length;
let numberInputChecked = $(this).parents('.myDiv').find('input:checked').not('.selectAll').length;
if( selectAllChecked )
$(this).parents('.myDiv').find('.selectAll')[0].checked = false;
if( numberInput == numberInputChecked)
$(this).parents('.myDiv').find('.selectAll')[0].checked = true;
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="actions" id="actions" title="Actions">
<div class="myDiv">
<div><input type="checkbox" name="action" id="" class="selectAll" value="0" /> Select All</div><br />
<div><input type="checkbox" name="action" id="" class="" value="1" /> <?php echo $lang["actions"][1]; ?></div><br />
<div><input type="checkbox" name="action" id="" class="" value="2" /> <?php echo $lang["actions"][2]; ?></div><br />
<div><input type="checkbox" name="action" id="" class="" value="3" /> <?php echo $lang["actions"][3]; ?></div><br />
</div>
<div class="myDiv">
<div><input type="checkbox" name="action" id="" class="selectAll" value="26" />Select All</div><br />
<div><input type="checkbox" name="action" id="" class="" value="27" /> <?php echo $lang["actions"][27]; ?></div><br />
<div><input type="checkbox" name="action" id="" class="" value="28" /> <?php echo $lang["actions"][28]; ?></div><br />
<div><input type="checkbox" name="action" id="" class="" value="29" /> <?php echo $lang["actions"][29]; ?></div><br />
<div><input type="checkbox" name="action" id="" class="" value="30" /> <?php echo $lang["actions"][30]; ?></div><br />
<div><input type="checkbox" name="action" id="" class="" value="31" /> <?php echo $lang["actions"][31]; ?></div>
</div>
</div>
Комментарии:
1. Спасибо тебе..!! Все работает нормально. Можем ли мы добавить в это еще одну логику?? например, если какой-либо флажок снят, кроме первого, который является «.selectAll», то флажок». seelectAll» должен автоматически сниматься.
2. Конечно, я отредактировал свой код, если вы хотите увидеть
3. Большое спасибо!! @Фанки