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

Рони, взяв за основу ваш вариант, поигравшись с тригерами и событиями, получился работающий вариант.
Попробовать можно на сайте, ссыдочка в теме есть.
1 - прошу глянуть на код, нет ли в нем явных косяков?

$('.view-tury.view-display-id-page_1 .views-col').on('mouseenter', function(e) {
			var tempThis = $(this);
			TimerInterval = setTimeout(function() {
				$("#main").append('<div id="follower">' + $(tempThis).html() + '</div>');
				tempTriger = 1
			}, 500)
		}).on('mousemove', function(e) {
			if (tempTriger == 1) {
				$('#follower').show();
				tempTriger = 2
			}
			if (tempTriger == 2) {
				var tempLeft = e.pageX + 325;
				if ( $(window).width() > tempLeft ) {
					$('#follower').offset({
						left: e.pageX + 20,
						top: e.pageY + 30
					});
				} else {
					$('#follower').offset({
						left: e.pageX - 300,
						top: e.pageY + 30
					});
				}
			}
		}).on('mouseleave', function(e) {
			clearTimeout(TimerInterval)
			$("#follower").remove(); 
			tempTriger = 0
		});


2 - проблема с передергиваниями скрола и позицией блока решилась, но при смене события на mousemove, если в это время курсор не двигался, то блок не отображается по таймеру, пока не шевельнешь мышкой.
если перетащить включение показа блока в mouseenter - тогда будет прыгание позиции.

3 - в связи с пунктом 2 вопрос: можно ли как-то принудильтельно вызвать событие mousemove, например сдвинуть курсор мышки или еще каким-то образом
в этом месте
TimerInterval = setTimeout(function() {
				$("#main").append('<div id="follower">' + $(tempThis).html() + '</div>');
				tempTriger = 1

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