Вы можете поместить универсальный код там, где вам не нужно идентифицировать идентификатор родительского div переключателя, на который нажали. Ниже приведен код, в котором вы можете удалить класс selected
из div, содержащего этот класс, и добавить его в родительский div переключаемой кнопки.
$(function(){
$('input[type=radio]').change(function() {
$('.selected').removeClass('selected').addClass('box');
$(this).closest('div').removeClass('box').addClass('selected');
});
});
.box {
border :1px solid red;
width:10%;
}
.selected {
border :1px solid blue;
width:10%;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.0/jquery.min.js"></script>
<div id='box1' class='box'><input id='grijs' type="radio" name="color" value="grijs">1</div>
<div id='box2' class='box'><input id='sepia' type="radio" name="color" value="sepia">2</div>
<div id='box3' class='box'><input id='normal' type="radio" name="color" value="normal">3</div>
РЕДАКТИРОВАТЬ : чтобы сделать решение более надежным, вы можете добавить любой класс, чтобы определить правильный родительский div и который делаетне измениться по сценарию. Приведенный ниже скрипт гарантирует, что вы всегда получите правильный div, даже когда измените структуру html.
Я добавил класс radioparent для css, чтобы идентифицировать родительский div и использовать класс переключения для переключения между боксом и выбранными классами.
$(function(){
$('input[type=radio]').change(function() {
$('.selected').toggleClass('selected box');
$(this).closest('div.radioparent').toggleClass('selected box');
});
});
.box {
border :1px solid red;
width:10%;
}
.selected {
border :1px solid blue;
width:10%;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.0/jquery.min.js"></script>
<div id='box1' class='radioparent box'><input id='grijs' type="radio" name="color" value="grijs">1</div>
<div id='box2' class='radioparent box'><input id='sepia' type="radio" name="color" value="sepia">2</div>
<div id='box3' class='radioparent box'><input id='normal' type="radio" name="color" value="normal">3</div>