Как добавить стиль родителю у которого дочерний элемент input:checked?
Есть несколько таких чекбоксов:
<div class="radiobtn_container">
<input id="greenhouse_width-1" type="radio" name="greenhouse_width" value="0" checked="" type="radio">
<label for="greenhouse_width-1">Все</label>
</div>
<div class="radiobtn_container">
<input id="greenhouse_width-2" type="radio" name="greenhouse_width" value="2" checked="" type="radio">
<label for="greenhouse_width-2">Второй чекбокс</label>
</div>
При смене чек-бокса можно менять стили таким образом:
.form_radio_btn input[type=radio]:checked + label {
background: #ffe0a6;
}
Но как поменять стиль родителя radiobtn_container ?
Нужно что-бы при смене активного checkbox'a менялся его родитель.
jQuery или JS не важно.
Ответы (1 шт):
Автор решения: Алексей Шиманский
→ Ссылка
let radioSelector = '.radiobtn_container input[type="radio"]';
$(document).on('change', radioSelector, function() {
$(radioSelector).closest('.radiobtn_container').removeClass('test');
$(this).closest('.radiobtn_container').addClass('test');
});
// $(radioSelector).eq(0).trigger('click'); --- можно использовать вместо кода ниже, если нужно поставить check на самом первом элементе
$(radioSelector).each(function() {
if ($(this).prop('checked'))
$(this).closest('.radiobtn_container').addClass('test');
});
.form_radio_btn input[type=radio]:checked + label {
background: #ffe0a6;
}
.test {
border: 5px solid black;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.0.0/jquery.min.js"></script>
<div class="radiobtn_container">
<input id="greenhouse_width-1" type="radio" name="greenhouse_width" value="0" type="radio">
<label for="greenhouse_width-1">Все</label>
</div>
<div class="radiobtn_container">
<input id="greenhouse_width-2" type="radio" name="greenhouse_width" value="2" checked="" type="radio">
<label for="greenhouse_width-2">Второй чекбокс</label>
</div>