Отображать последующие элементы при наведении
Хочу реализовать hover-эффект, да такой, что элементов будет 15-20 условно, при этом сам эффект реализовал так:
html:
<div>
<div class="block1"></div>
</div>
<div>
<div class="block2"></div>
</div>
<div>
<div class="block3"></div>
</div>
<div>
<div class="block4"></div>
</div>
css:
.block1 {
width: 100px;
height: 100px;
}
.block2 {
width: 100px;
height: 100px;
display:none;
}
.block2.when_block1_hover {
display:block;
}
js + jQuery:
$(function(){
$('.block1').hover(function(){
$('.block2').addClass('when_block1_hover');
}, function(){
$('.block2').removeClass('when_block1_hover');
})
});
Если я буду таким методом реализовывать каждый элемент, то будет слишком массивно! Подскажите, как можно реализовать счётчик, либо что-то похожее.
Ответы (1 шт):
Автор решения: ksa
→ Ссылка
Если я буду таким методом реализовывать каждый элемент, то будет слишком массивно! Подскажите, как можно реализовать счётчик, либо что-то похожее.
Нужно разбить все элементы на два типа.
- На который будет выполняться
hover - Те, которые будут показываться/скрываться
$(function(){
$('.main').hover(function(){
const o = $(this).parent().next().find('div:first-child')
o.addClass('when_block_hover');
}, function(){
const o = $(this).parent().next().find('div:first-child')
o.removeClass('when_block_hover');
})
});
.main {
width: 100px;
height: 100px;
border: 1px solid;
}
.info {
width: 100px;
height: 100px;
display:none;
}
.info.when_block_hover {
display:block;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div>
<div class="main">block1</div>
</div>
<div>
<div class="info">block2</div>
</div>
<div>
<div class="main">block3</div>
</div>
<div>
<div class="info">block4</div>
</div>