Javascript.RU

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

простите, не понял, это как?
если о примере - он здесь, только без таймера - центральный блок, сетка
http://astravel.com.ua/
код я тоже весь привел, но посути, мне нужно изолировать от случайно проводки все, что находится внутри функции
$('.view-tury.view-display-id-page_1 .views-col').mousemove(function(e) { ... }

единственное - выношу за таймер переменную
var tempThis = $(this);

иначе без нее не определяются данные внутри функции для элемента, над которым находится курсор.

Последний раз редактировалось alecto, 29.06.2016 в 15:25.
Ответить с цитированием
  #12 (permalink)  
Старый 29.06.2016, 15:38
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

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

точно, это условия, чтобы скрипт работал только на главной странице
if (location.href == 'http://astravel.com.ua/') { 
}

но оно никак не влиять на нужный код скрипта
сейчас уберу из поста, чтобы не мешалось.
Ответить с цитированием
  #14 (permalink)  
Старый 29.06.2016, 16:12
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

alecto,
вариант
$("#main").append('<div id="follower"></div>');
    $("#follower").hide();
    var TimerInterval;
    $(".view-tury.view-display-id-page_1 .views-col").mousemove(function(e) {
        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
        })
    }).mouseenter(function() {
        clearTimeout(TimerInterval);
        $("#follower").html($(this).html()).hide();
        TimerInterval = setTimeout(function() {
            $("#follower").show()
        }, 1500)
    }).mouseleave(function() {
        $("#follower").html("").hide();
        clearTimeout(TimerInterval)
    })
Ответить с цитированием
  #15 (permalink)  
Старый 29.06.2016, 16:25
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

косметические дополнения к варианту выше
$("#main").append('<div id="follower"></div>');
    $("#follower").hide();
    var TimerInterval;
    $(".view-tury.view-display-id-page_1 .views-col").mousemove(function(e) {
        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
        })
    }).mouseenter(function() {
        clearTimeout(TimerInterval);
        var tempThis = $(this);
        $("#follower").html(tempThis.html()).hide();
        TimerInterval = setTimeout(function() {
            $("#follower").stop().show();
            tempThis.trigger("mousemove");
        }, 1500)
    }).mouseleave(function() {
        $("#follower").html("").stop().hide();
        clearTimeout(TimerInterval)
    })
Ответить с цитированием
  #16 (permalink)  
Старый 29.06.2016, 16:29
Аспирант
Отправить личное сообщение для alecto Посмотреть профиль Найти все сообщения от alecto
 
Регистрация: 12.11.2014
Сообщений: 84

спасибо!
вроде заработало, но вот беда...
блок появляется черти где справа внизу.
т.е. на mouseenter появляется горизонтальный скрол, а блока нигде не видно.
только если продолжить движение мышкой - скрол исчезает и появляется блок, где ему и положено быть.
я не сразу понял, где находится блок + неэстетичное прыгание прокруток при каждом наезде на ячейку сетки.

так же пробовал код
$("#follower").offset({
            left: e.pageX - 300,
            top: e.pageY + 30
        })

добавить в mouseenter - не помогло.

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

мне кажется, вариант с mouseenter не удастся заставить работать, как нужно.

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

и еще вопрос:
у меня на странице изначально нет плавающего блока, он формируется при наведении на элемент.
так же для него и его контента есть стили.
на mousemove по тригеру создается сам див и происходит его заполнение, на mouseleave - блок полностью удаляется.
я решил, что если содержимое блока полностью генерируется по событию мышки, то смысл его прятать/показывать, поэтому удалил-создал.
или я заблуждаюсь в этом вопросе?
Ответить с цитированием
  #18 (permalink)  
Старый 29.06.2016, 16:45
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

alecto,
а так ?
$("#main").append('<div id="follower"></div>');
    $("#follower").hide();
    $(".view-tury.view-display-id-page_1 .views-col").off().mousemove(function(e) {
        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
        })
    }).mouseenter(function() {
        $("#follower").stop().hide().html($(this).html()).delay(1500).show();
    }).mouseleave(function() {
        $("#follower").html("").stop().hide();
        })
Ответить с цитированием
  #19 (permalink)  
Старый 29.06.2016, 16:46
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Сообщение от alecto
я заблуждаюсь в этом вопросе?
как вам удобнее -- но проще создать 1 раз
Ответить с цитированием
  #20 (permalink)  
Старый 29.06.2016, 16:49
Аспирант
Отправить личное сообщение для alecto Посмотреть профиль Найти все сообщения от alecto
 
Регистрация: 12.11.2014
Сообщений: 84

#18 срабатывает сразу, как и первоначальном варианте.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите разобраться с this uroboros7 jQuery 4 02.01.2015 00:56
Помогите разобраться с калькулятором Maksim858 Ваши сайты и скрипты 1 27.12.2014 13:23
Получение ответа сервера через iframe и xhr. Помогите разобраться. Arconas AJAX и COMET 0 26.02.2013 10:38
Помогите начинающему разобраться с setTimeout Rain Events/DOM/Window 6 09.08.2011 21:18
Помогите разобраться с галереей IMAGIN yana_studio Общие вопросы Javascript 4 12.12.2009 17:24