2010-05-19 3 views
2

У меня есть следующий код JQueryзадержка 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.

+0

Одно примечание: длительность должна быть дана в миллисекундах рутин как 'fadeTo' – Pointy

+0

@Pointy: 1 и 0,1 являются помутнение значения – jAndy

+0

@jAndy о Durr; Благодарю. Ничего, @ Крис. – Pointy

ответ

0

Вы всегда можете пойти lo-tech с помощью setTimeout.

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

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

редактировать удалены немота

Смежные вопросы