idclev31
@idclev31
Местный дурачек

Почему не работает clearTimeout?

Есть такой код
var hovered = false;
var timeout;
$('.drop-menu').hover(
  function(){
		if(timeout){
			clearTimeout(timeout);
			timeout = null;
		}
		hovered = true;
		$(".logo").animate({
    	           marginLeft: '-=25%'
		}, 100);
  },
  function(){
		timeout = setTimeout(hovered = false,300);
		if(hovered == false){
			$(".logo").delay( 300 ).animate({
				marginLeft:'0px',
	    	                marginLeft: '35%'
			}, 100);
		}
});

При наведении мышью на один элемент,другой элемент в верстке должен сдвигаться влево, после снятия наведения он должен возвращаться на свое место.Я хочу отсрочить сдвиг назад, чтобы при частом наведении и снятии наведения элемент не дергался туда-сюда.
Делаю timeout на снятие, и при новом наведении по идее он должен сбрасываться с помощью clearTimeout, но этого не происходит.
  • Вопрос задан
  • 1381 просмотр
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
timeout = setTimeout(hovered = false,300);
Почитайте, как пользоваться setTimeout().
Поскольку вы используете его совершенно неверно, clearTimeout срабатывает правильно, но ему просто нечего отменять.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
03 мая 2024, в 19:46
1000 руб./за проект
03 мая 2024, в 18:59
2500 руб./за проект
03 мая 2024, в 18:52
15000 руб./за проект