#javascript #html #jquery #css #wordpress
#javascript #HTML #jquery #css #wordpress
Вопрос:
$(function() {
$('.item').click(function() {
$('.item').removeClass('active');
$(this).addClass('active');
});
if ( $(".item:nth-child(1)").hasClass("active") ) {
$(".opt-img:nth-child(1)").addClass("show");
}
if ( $(".item:nth-child(2)").hasClass("active") ) {
$(".opt-img:nth-child(2)").addClass("show");
}
if ( $(".item:nth-child(3)").hasClass("active") ) {
$(".opt-img:nth-child(3)").addClass("show");
}
if ( $(".item:nth-child(4)").hasClass("active") ) {
$(".opt-img:nth-child(4)").addClass("show");
}
if ( $(".item:nth-child(5)").hasClass("active") ) {
$(".opt-img:nth-child(5)").addClass("show");
}
});
.item{
width: 20px;
background: #ccc;
text-align: center;
margin-bottom: 10px;
cursor: pointer;
}
.opt-img {
display: none;
}
.show{
display: block;
}
.active{
color: red;
}
<link href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://code.jquery.com/jquery-1.11.1.min.js" type="text/javascript" ></script>
<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js" type="text/javascript" ></script>
<div class="row">
<div class="col-sm-6">
<div class="operator-acc">
<div class="item active">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
<div class="item">5</div>
</div>
</div>
<div class="col-sm-6">
<div class="opt-imgs">
<div class="opt-img"><img src="https://via.placeholder.com/300/00f/fff.png"></div>
<div class="opt-img"><img src="https://via.placeholder.com/300/04f/fff.png"></div>
<div class="opt-img"><img src="https://via.placeholder.com/300/40f/fff.png"></div>
<div class="opt-img"><img src="https://via.placeholder.com/300/00e/fff.png"></div>
<div class="opt-img"><img src="https://via.placeholder.com/300/09f/fff.png"></div>
</div>
</div>
</div>
Если класс first .item имеет класс .active, добавьте .показать класс первому .opt-img-классу. Если класс second .item имеет класс .acive, добавьте .показывать для второго класса .opt-img, а также для третьего, четвертого и пятого элемента.
На данный момент это работает только для первого элемента. И не работает для других элементов.
Ответ №1:
В этом примере я использую eq()
метод для определения индекса индекса изображения и index()
метод для определения индекса нажатой кнопки, что делает логический код коротким.
$(function() {
$('.item').click(function() {
$('.item').removeClass('active');
$(this).addClass('active');
$('.opt-img').removeClass('show');
$('.opt-img').eq($(this).index()).addClass('show');
});
});
.item{
width: 20px;
background: #ccc;
text-align: center;
margin-bottom: 10px;
cursor: pointer;
}
.opt-img {
display: none;
}
.show{
display: block;
}
.active{
color: red;
}
<link href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://code.jquery.com/jquery-1.11.1.min.js" type="text/javascript" ></script>
<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js" type="text/javascript" ></script>
<div class="row">
<div class="col-sm-6">
<div class="operator-acc">
<div class="item active">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
<div class="item">5</div>
</div>
</div>
<div class="col-sm-6">
<div class="opt-imgs">
<div class="opt-img show"><img src="https://via.placeholder.com/300/00f/fff.png"></div>
<div class="opt-img"><img src="https://via.placeholder.com/300/04f/fff.png"></div>
<div class="opt-img"><img src="https://via.placeholder.com/300/40f/fff.png"></div>
<div class="opt-img"><img src="https://via.placeholder.com/300/00e/fff.png"></div>
<div class="opt-img"><img src="https://via.placeholder.com/300/09f/fff.png"></div>
</div>
</div>
</div>
Ответ №2:
Возможно, это неправильно, но функция click также должна содержать все операторы if, иначе она будет работать только при загрузке страницы следующим образом:
$(function() {
$('.item').click(function() {
$('.item').removeClass('active');
$(this).addClass('active');
checkActives();
});
function checkActives(){
if ( $(".item:nth-child(1)").hasClass("active") ) {
$(".opt-img:nth-child(1)").addClass("show");
}
if ( $(".item:nth-child(2)").hasClass("active") ) {
$(".opt-img:nth-child(2)").addClass("show");
}
if ( $(".item:nth-child(3)").hasClass("active") ) {
$(".opt-img:nth-child(3)").addClass("show");
}
if ( $(".item:nth-child(4)").hasClass("active") ) {
$(".opt-img:nth-child(4)").addClass("show");
}
if ( $(".item:nth-child(5)").hasClass("active") ) {
$(".opt-img:nth-child(5)").addClass("show");
}
}
checkActives();
});
Ответ №3:
Я просто исправлю ваш код (без его оптимизации), просто чтобы показать ошибку.
Взгляните на свой код здесь:
$('.item').click(function() {
$('.item').removeClass('active');
$(this).addClass('active');
}); // <-------------- this must be moved to the end of you `$(function() {...})`
Итак, пример приведен ниже. Некоторые примечания: Я добавил немного CSS только для украшения (под словом TEST
, вы можете удалить его):
$(function() {
$('.item').click(function() {
$('.item').removeClass('active');
$(".opt-img").removeClass('show');
$(this).addClass('active');
if ($(".item:nth-child(1)").hasClass("active")) {
$(".opt-img:nth-child(1)").addClass("show");
}
if ($(".item:nth-child(2)").hasClass("active")) {
$(".opt-img:nth-child(2)").addClass("show");
}
if ($(".item:nth-child(3)").hasClass("active")) {
$(".opt-img:nth-child(3)").addClass("show");
}
if ($(".item:nth-child(4)").hasClass("active")) {
$(".opt-img:nth-child(4)").addClass("show");
}
if ($(".item:nth-child(5)").hasClass("active")) {
$(".opt-img:nth-child(5)").addClass("show");
}
});
});
.item {
width: 20px;
background: #ccc;
text-align: center;
margin-bottom: 10px;
cursor: pointer;
}
.opt-img {
display: none;
}
.show {
display: block;
}
.active {
color: red;
}
/*TEST*/
.operator-acc {
display: flex;
width: 100%;
justify-content: space-evenly;
}
<link href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://code.jquery.com/jquery-1.11.1.min.js" type="text/javascript"></script>
<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js" type="text/javascript"></script>
<div class="row">
<div class="col-sm-6">
<div class="operator-acc">
<div class="item active">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
<div class="item">5</div>
</div>
</div>
<div class="col-sm-6">
<div class="opt-imgs">
<div class="opt-img show"><img src="https://via.placeholder.com/300/00f/fff.png"></div>
<div class="opt-img"><img src="https://via.placeholder.com/300/04f/fff.png"></div>
<div class="opt-img"><img src="https://via.placeholder.com/300/40f/fff.png"></div>
<div class="opt-img"><img src="https://via.placeholder.com/300/00e/fff.png"></div>
<div class="opt-img"><img src="https://via.placeholder.com/300/09f/fff.png"></div>
</div>
</div>
</div>