Задержка jQuery не работает должным образом - PullRequest
2 голосов
/ 19 мая 2010

У меня есть следующий код jQuery

$("#dropdown").hover(function() { 
        $(this).stop(true,true).fadeTo('fast',1);
        $("#options").stop(true,true).slideDown();
    }, function() { 
        $(this).delay(1000).stop(true,true).fadeTo('fast',0.1);
        $("#options").delay(1000).stop(true,true).slideUp();
    }
);

Я ожидаю, что когда мышь уйдет #dropdown, она будет ждать 1 секунду, прежде чем продолжить. Этого не происходит.

Что я пытаюсь добиться, если есть лучший способ, это оставить выпадающее меню видимым на секунду или две после перемещения мыши, и я также хотел бы предотвратить повторение событий, чтобы предотвратить появление артефактов и "приколы", если вы будете очень быстро перемещать мышь вперед и назад от div

Ответы [ 3 ]

1 голос
/ 19 мая 2010

Ваши звонки на stop не помещаются в очередь анимации - они выполняются немедленно. Я не уверен, действительно ли они вам нужны в процедуре "зависания".

edit удалена немота

1 голос
/ 19 мая 2010

Проблема в .stop (). Если вы возьмете это, это сработает:

http://jsfiddle.net/LZ8yt/

0 голосов
/ 19 мая 2010

Вы всегда можете пойти в ногу с технологией setTimeout.

var dropDownElement = $(this);
setTimeout(function()
{
    dropDownElement.fadeTo('fast', 0.1);
    // Other Code
}, 1000);
...