Timeout события mouseover
Все привет! Делаю простенький функционал, в ряд расположены 5 элементов, при наведении курсора на элемент он получает класс active, а у других active убираем, ну банально в общем то.
код
$('.slider__wrapper__item').on('mouseover', function(){
if($(this).hasClass("active")){
$(this('.slider__wrapper__item__info')).css('display','block');
} else {
$('.slider__wrapper__item').removeClass('active animate__slideInLeft');
$(this).addClass('active animate__slideInLeft');
}
});
Вопрос в том, можно ли как то делать проверку, что если курсор юзера задержался на элементе меньше, чем на полсекунды, мы ничего не делаем? Нужно для того, что если юзер просматривает 4-й элемент, и хочет посмотреть 2-й, проскакивая через 3-й этот самый третий элемент не раскрывался бы. Заранее благодарю за любой совет! |
<style>
#cont {
display: flex;
}
.slider__wrapper__item {
position: relative;
width: 100px;
height: 100px;
border: 1px solid black;
background-color: green;
}
.slider__wrapper__item.active {
background-color: red;
}
</style>
<body>
<div id='cont'>
<div class='slider__wrapper__item'></div>
<div class='slider__wrapper__item'></div>
<div class='slider__wrapper__item'></div>
<div class='slider__wrapper__item'></div>
<div class='slider__wrapper__item'></div>
</div>
<script>
document.querySelectorAll('.slider__wrapper__item')
.forEach (div => div.addEventListener('mouseover', function (ev) {
const timer = setTimeout( () => {
this.classList.add('active');
}, 500);
this.addEventListener('mouseout', ()=> {
clearTimeout(timer);
this.classList.remove('active')
}, {once:true});
})
);
</script>
</body>
|
|
voraa,
Спасибо! То, что нужно! |
| Часовой пояс GMT +3, время: 12:48. |