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, но этого не происходит.
  • Вопрос задан
  • 1395 просмотров
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
timeout = setTimeout(hovered = false,300);
Почитайте, как пользоваться setTimeout().
Поскольку вы используете его совершенно неверно, clearTimeout срабатывает правильно, но ему просто нечего отменять.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы