Для этого вам нужно установить свойство checked
на радиостанции .control
, которое соответствует индексу активного слайда. Для этого вы можете использовать eq()
, index()
и prop()
.
Однако стоит отметить, что ваша логика c намного сложнее, чем должна быть. Вы можете упростить его, удалив инкрементные переменные, которые подсчитывают индекс текущего слайда, и просто поработали с классом .active
в DOM, чтобы определить, каким будет следующий показанный слайд с использованием prev()
и next()
. Также обратите внимание на использование атрибута data-dir
для DRY логики c между обработчиками кнопок.
var $controls = $('.controls').on('change', function() {
var $slides = $(".slide").stop().animate({ opacity: .4 });
$slides.removeClass('active');
id = $(this).data('b');
$('#' + id).addClass('active');
$slides.animate({ opacity: .9 });
});
$('.next, .prev').click(function() {
var direction = $(this).data('dir');
var $slides = $(".slide").stop().animate({ opacity: .4 });
var $activeSlide = $slides.filter('.active').removeClass('active');
var $targetSlide = $activeSlide[direction]();
if ($targetSlide.length === 0)
$targetSlide = $slides[direction == 'next' ? 'first' : 'last']()
$targetSlide.addClass('active');
$controls.eq($targetSlide.index()).prop('checked', true);
$slides.animate({ opacity: .9 });
});
.wrapper {
height: 250px;
overflow: hidden;
}
.slider {
height: 250px;
}
.slide {
height: 100%;
width: 100%;
display: none;
padding: 20px;
color: #fff;
font-weight: 900;
opacity: 1;
}
.control {
transform: translateY(-50px);
}
.slide:nth-of-type(1) {
background: #dd2525;
}
.slide:nth-of-type(2) {
background: #3791ee;
}
.slide:nth-of-type(3) {
background: #df6af0;
}
.active {
display: block;
}
.prev,
.next {
background: white;
width: 40px;
height: 40px;
border-radius: 20px;
border: none;
cursor: pointer;
opacity: 0.4;
}
.prev:hover {
opacity: 0.6;
transform: scale(1.1);
transition: .5s;
}
.next:hover {
opacity: 0.6;
transform: scale(1.1);
transition: .5s;
}
.control input {
margin-left: 5px !important;
margin-right: 5px !important;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.1/jquery.min.js"></script>
<link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css">
<div class="wrapper">
<div class="slider">
<div class="slide active" id="b1">Slide 1</div>
<div class="slide" id="b2">Slide 2</div>
<div class="slide" id="b3">Slide 3</div>
</div>
<div class="control" style="text-align:center;">
<button id="c4" class="prev" data-dir="prev" value=""><span class="glyphicon glyphicon-chevron-left"></span></button>
<input id="c1" class="controls" name="radio" type="radio" checked="checked" data-b="b1" />
<input id="c2" class="controls" name="radio" type="radio" data-b="b2" />
<input id="c3" class="controls" name="radio" type="radio" data-b="b3" />
<button id="c5" class="next" data-dir="next" value=""><span class="glyphicon glyphicon-chevron-right"></span></button>
</div>
</div>