Снимите отметку с дочерних флажков в других группах при установке нескольких дочерних флажков в текущей группе

Я создал родительский дочерний флажок. Когда родительский флажок установлен, дочерние флажки будут видны, где можно установить несколько флажков.

Но я хочу снять флажки дочерних элементов в других группах. Таким образом, вам разрешено устанавливать несколько флажков только в определенной группе одновременно. Поскольку я хочу сохранить только подгруппу значений флажка.

См. настройку ниже для настройки флажка родительского дочернего элемента.

<ul class = "acf-checkbox-list acf-bl">
<li data-id = "354"><label><input type = "checkbox" name = "acf[field_63fb5f54847a5][]" value = "354"> <span>topic 1</span></label><ul class = "children acf-bl" style = "display: block;">
<li data-id = "377"><label><input type = "checkbox" name = "acf[field_63fb5f54847a5][]" value = "377"> <span>subtopic a </span></label></li>
<li data-id = "361"><label><input type = "checkbox" name = "acf[field_63fb5f54847a5][]" value = "361"> <span>subtopic  b</span></label></li>
<li data-id = "366"><label><input type = "checkbox" name = "acf[field_63fb5f54847a5][]" value = "366"> <span>subtopic  c</span></label></li>
</ul>
</li>
<li data-id = "372"><label><input type = "checkbox" name = "acf[field_63fb5f54847a5][]" value = "372"> <span>topic 2</span></label><ul class = "children acf-bl">
<li data-id = "389"><label><input type = "checkbox" name = "acf[field_63fb5f54847a5][]" value = "389"> <span>subtopic x</span></label></li>
<li data-id = "399"><label><input type = "checkbox" name = "acf[field_63fb5f54847a5][]" value = "399"> <span>subtopic  y</span></label></li>
</ul>
</li>
<li data-id = "373"><label><input type = "checkbox" name = "acf[field_63fb5f54847a5][]" value = "373"> <span>Topic 3</span></label><ul class = "children acf-bl">
<li data-id = "410"><label><input type = "checkbox" name = "acf[field_63fb5f54847a5][]" value = "410"> <span>subtopic 1</span></label></li>
<li data-id = "412"><label><input type = "checkbox" name = "acf[field_63fb5f54847a5][]" value = "412"> <span>subtopic 2 </span></label></li>
<li data-id = "409"><label><input type = "checkbox" name = "acf[field_63fb5f54847a5][]" value = "409"> <span>subtopic 3</span></label></li>
</ul>
</li>
</li>
</ul>

const checkbox = document.querySelectorAll('.acf-checkbox-list > li > label > input');
checkbox.forEach(function(checkitem){
var value = checkitem.value;
checkitem.addEventListener('click', (event) => {
const parentli = document.querySelector('[data-id = "'+value+'"]').querySelector('.children');
if (checkitem.checked) {
parentli.style.display = "block";
}
else {
parentli.style.display = "none";
}
})
});

.children {
  
  display:none;
}

Заранее спасибо!

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
0
52
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Всякий раз, когда ваш флажок внутри вашего дочернего div установлен, вы можете проверить, равна ли длина проверенных входов > 0, в зависимости от этого вы можете использовать .not и prop, чтобы удалить отмеченные из других дочерних входов div.

Демонстрационный код:

$(".acf-checkbox-list > li > label > input").click(function() {
  var closest_li = $(this).closest("li").find(".children"); //get closest children..
  if ($(this).is(":checked")) {
    closest_li.show() //hide/show
  } else {
    closest_li.hide()
  }
})


$(".children input").click(function() {

  var current_child_div = $(this).closest(".children")
  if (current_child_div.find("input:checked").length > 0) {
    $(".children").not(current_child_div)
      .find("input:checked").prop("checked", false); //get children div > input ignore current children div and uncheck -all
  }
})
.children {
  display: none;
}
<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul class = "acf-checkbox-list acf-bl">
  <li data-id = "354"><label><input type = "checkbox" name = "acf[field_63fb5f54847a5][]" value = "354" checked> <span>topic 1</span></label>
    <ul class = "children acf-bl" style = "display: block;">
      <li data-id = "377"><label><input type = "checkbox" name = "acf[field_63fb5f54847a5][]" value = "377"> <span>subtopic a </span></label></li>
      <li data-id = "361"><label><input type = "checkbox" name = "acf[field_63fb5f54847a5][]" value = "361"> <span>subtopic  b</span></label></li>
      <li data-id = "366"><label><input type = "checkbox" name = "acf[field_63fb5f54847a5][]" value = "366"> <span>subtopic  c</span></label></li>
    </ul>
  </li>
  <li data-id = "372"><label><input type = "checkbox" name = "acf[field_63fb5f54847a5][]" value = "372"> <span>topic 2</span></label>
    <ul class = "children acf-bl">
      <li data-id = "389"><label><input type = "checkbox" name = "acf[field_63fb5f54847a5][]" value = "389"> <span>subtopic x</span></label></li>
      <li data-id = "399"><label><input type = "checkbox" name = "acf[field_63fb5f54847a5][]" value = "399"> <span>subtopic  y</span></label></li>
    </ul>
  </li>
  <li data-id = "373"><label><input type = "checkbox" name = "acf[field_63fb5f54847a5][]" value = "373"> <span>Topic 3</span></label>
    <ul class = "children acf-bl">
      <li data-id = "410"><label><input type = "checkbox" name = "acf[field_63fb5f54847a5][]" value = "410"> <span>subtopic 1</span></label></li>
      <li data-id = "412"><label><input type = "checkbox" name = "acf[field_63fb5f54847a5][]" value = "412"> <span>subtopic 2 </span></label></li>
      <li data-id = "409"><label><input type = "checkbox" name = "acf[field_63fb5f54847a5][]" value = "409"> <span>subtopic 3</span></label></li>
    </ul>
  </li>
  </li>
</ul>

Другие вопросы по теме