Показать сообщение отдельно
  #1 (permalink)  
Старый 31.05.2016, 23:44
Аспирант
Отправить личное сообщение для alecto Посмотреть профиль Найти все сообщения от alecto
 
Регистрация: 12.11.2014
Сообщений: 84

Помогите разобраться с mouseenter / mouseleave и setTimeout
Нужно добиться, чтобы действие выполнялось только по истечении заданного интервала мыши.
Т.е., хотелось бы установить интервал, например 0.5с, если указатель мыши находится над элементом меньше этого времени - считаем случайно проводкой и ничего не выполняется.
Если больше - выполняется действие.

Удалось построить следующий код:
$('.view-display-id-page_1').on('mouseenter', '.views-col', function() {
		var tempThis = $(this);
		var TimerInterval = setTimeout(function(){
			$(tempThis).addClass('mouseenter');
			$(tempThis).find('.views-field-title .field-content > a').addClass('mouseenter');
			$(tempThis).find('.views-field-field-spisok-dat .field-content').addClass('mouseenter');
		}, 1000);
	})
 	$('.view-display-id-page_1').on('mouseleave', '.views-col', function() {
		var tempThis = $(this);
			$(tempThis).removeClass('mouseenter');
			$(tempThis).find('.views-field-title .field-content > a').removeAttr('class');
			$(tempThis).find('.views-field-field-spisok-dat .field-content').removeClass('mouseenter');
		clearTimeout(TimerInterval);
	})



Но, в данной реализации срабатывание выполняется всегда, причем если мышка ушла раньше заказанного времени, то начинается некорректная работа переключения классов.

Безрезультатно бьюсь над задачей весь день. Прошу помощи как для совсем для начинающих.

Спасибо
Ответить с цитированием