Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.05.2014, 15:16
Аспирант
Отправить личное сообщение для Floyd Посмотреть профиль Найти все сообщения от Floyd
 
Регистрация: 20.05.2014
Сообщений: 40

jquery hover оставляет шлейф
Добрый день,
прошу подсказать как избавиться от проблемы.
есть строки, наводя мышку на которые срабатывает
"высплывание" кнопки удаления строки, при убирании мышки - кнопка исчезает.
вот оно: http://sdelaju.ru/hover/

фактически, сам код:
$('.str_block')
	.on( "mouseenter", function() {
		$(this).children(".record_del").animate({ opacity: 1 }, 500);
	})
	.on( "mouseleave", function() {
		$(this).children(".record_del").css({opacity: 0});
	});


при медленном проведении мыши всё ок, если дернешь быстро - остается шлейф непогашенных кнопок.
причем, вешал в mouseleave console.log с номерами строк, должно отрабатывать.
из-за чего такая проблема и как ее можно пофиксить? спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 20.05.2014, 15:31
Профессор
Отправить личное сообщение для depp Посмотреть профиль Найти все сообщения от depp
 
Регистрация: 22.04.2014
Сообщений: 151

$('.str_block')
	.on( "mouseenter", function() {
		$(this).children(".record_del").show('slow');
	})
	.on( "mouseleave", function() {
		$(this).children(".record_del").hide('fast');
	});
Ответить с цитированием
  #3 (permalink)  
Старый 20.05.2014, 15:34
Профессор
Отправить личное сообщение для depp Посмотреть профиль Найти все сообщения от depp
 
Регистрация: 22.04.2014
Сообщений: 151

проблема в том, что ты ставишь задержку в 500мс.
в итоге когда мышка на элементе, то запускается счетчик, который в течение 500 мс делает свойство opacity = 1. если ты до этого времени мышку с элемента убираешь, то срабатывает opacity = 0, а счетчик еще не завершил свою работу. поэтому когда истекает 500 мс, присваивается opacity = 1
Ответить с цитированием
  #4 (permalink)  
Старый 20.05.2014, 15:45
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,071

Сообщение от Floyd
$(this).stop().children
останавливайте предыдущую анимацию
Ответить с цитированием
  #5 (permalink)  
Старый 20.05.2014, 16:25
Аспирант
Отправить личное сообщение для Floyd Посмотреть профиль Найти все сообщения от Floyd
 
Регистрация: 20.05.2014
Сообщений: 40

Спасибо за ответы, о стопе я и не вспомнил. решилось вот так:
$('.str_block')
	.on( "mouseenter", function() {
		$(this).children(".record_del").animate({ opacity: 1 }, 500);
	})
	.on( "mouseleave", function() {
		$(this).children(".record_del").stop();
		$(this).children(".record_del").css({opacity: 0});
	});
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
хочу инвайт на хабр macdack Оффтопик 45 28.07.2013 23:18
jquery не отрабатывает событие hover out при использовании беспроводной мыши F_Z_14 jQuery 1 09.10.2012 10:32
Установка цвета через функцию .css() сбрасывает цвет для :hover xintrea jQuery 4 18.08.2012 15:38
JQuery отложенная обработка событий hover DemonWather jQuery 2 09.03.2011 09:01
Переделка скрипта меню на JQuery Bangoo jQuery 1 10.01.2011 13:50