Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.06.2023, 08:27
Аспирант
Отправить личное сообщение для Volonter Посмотреть профиль Найти все сообщения от Volonter
 
Регистрация: 18.01.2011
Сообщений: 93

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-й этот самый третий элемент не раскрывался бы.
Заранее благодарю за любой совет!
Ответить с цитированием
  #2 (permalink)  
Старый 27.06.2023, 09:33
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,745

<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>
Ответить с цитированием
  #3 (permalink)  
Старый 27.06.2023, 10:12
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Volonter,

https://javascript.ru/forum/showthread.php?p=236002
Ответить с цитированием
  #4 (permalink)  
Старый 27.06.2023, 11:57
Аспирант
Отправить личное сообщение для Volonter Посмотреть профиль Найти все сообщения от Volonter
 
Регистрация: 18.01.2011
Сообщений: 93

voraa,
Спасибо! То, что нужно!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Правильный переход с live на on для события mouseover Zdravko Общие вопросы Javascript 2 11.05.2023 12:57
свойства объекта события Morr123 Элементы интерфейса 3 10.08.2016 06:36
Как убрать события mouseover? Andrey_S jQuery 1 12.05.2015 08:35
Сбрасывание события mouseover Worka Events/DOM/Window 3 12.03.2012 03:03
Передача параметров в колбэки и дальнейшее их вешанье на события. Gremlin Общие вопросы Javascript 17 13.08.2011 08:54