Если вы можете поместить все флажки в контейнере, вы можете установить один click
прослушиватель событий для контейнера, и event.target
выдаст вам элемент, по которому щелкнули, и previousElementSibling
выберет входной сигнал одного из братьев.
function doSomething() {
const selectedInput = event.target.previousElementSibling;
selectedInput.checked = selectedInput.checked? false : true;
}
Но в случае вероятности того, что вы документируете изменения структуры в будущем, например, если другие элементы окажутся между вводом и меткой или их порядок изменится, селектор родного брата потерпит неудачу , Чтобы решить эту проблему, вы можете использовать родительский селектор и выбрать внутри него элемент ввода chechbox.
document.getElementById('container').addEventListener('click', doSomething);
function doSomething() {
const selectedElement = event.target.parentElement.querySelector('input[type="checkbox"]');
selectedElement.checked = selectedElement.checked? false:true;
}
<div id= 'container'>
<span class="caption">RAM</span>
<a class="item">
<div class="item-checkbox">
<input type="checkbox" tabindex="0" class="hidden" value="4 GB">
<label>4 GB</label>
</div>
</a>
<a class="item">
<div class="item-checkbox">
<input type="checkbox" tabindex="0" class="hidden" value="8 GB">
<label>8 GB</label>
</div>
</a>
<a class="item">
<div class="item-checkbox">
<input type="checkbox" tabindex="0" class="hidden" value="16 GB">
<label>16 GB</label>
</div>
</a>
</div>