Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   JQuery .hover() уход с элемента во время его анимации (https://javascript.ru/forum/jquery/16739-jquery-hover-ukhod-s-ehlementa-vo-vremya-ego-animacii.html)

warobushek 20.04.2011 07:49

JQuery .hover() уход с элемента во время его анимации
 
Приветствую!
заметил странную вещь,
есть картинка,
которая появляется и потом увеличивается при наведении на ее уменьшенную копию,
при уходе с картинки поставлен обработчик, уменьшающий ее обратно.

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

вот код :
/* УВЕЛИЧЕНИЕ КАРТИНКИ ПРИ НАВЕДЕНИИ */
	$('.miss_right img.min').hover(function() {
		
		$('.miss_right img.big:visible').stop(true).css('display', 'none');
		
		var center = {};
		center.left = $(this).offset().left + $(this).width()/2;
		center.top  = $(this).offset().top  - $(this).height()/2;
		
		$(this).next('.big').css('position', 'absolute');
		$(this).next('.big').css('left', '' + $(this).position().left + 'px');
		$(this).next('.big').css('top',  '' + $(this).position().top  + 'px');
		
		$(this).next('.big').css('display', 'block');
		$(this).next('.big').animate({'width' : '70px'});
	},
	function() {
	});
	
	
	
	$('.miss_right img.big').hover(function() {
	},
	function() {
		$(this).stop(true).animate({'width': '54px'}, function() {
			$(this).css('display', 'none');
		})
	});


Кто с этим сталкивался, подскажите решение проблемы, пожалуйста..

kostr 20.04.2011 13:41

Дело не в том, что анимация не закончена, а в том, что курсор на большую картинку не попадает и, соответственно, с нее не уходит. Допишите для контейнера .miss_right обработчик:
$('.miss_right').mouseleave(function() {
  $(this).find('.big').stop(true).animate({'width': '54px'}, function() {
   $(this).css('display', 'none');
  })
 });

только он должен быть линейным, а не блочным.


Часовой пояс GMT +3, время: 23:40.