Задержка исполнения скрипта при наведении (не delay)

Allenka6333

Постоялец
Регистрация
4 Мар 2012
Сообщения
122
Реакции
48
Подскажите, пожалуйста, копаю, копаю скрипт, не могу понять как его заставить работать...
Есть вот такая штука в оригинале
$('#nav > li').hover(function () {
var top = $(this).position().top + $(this).height();
$(this).find('> ul').css({top: top});
$(this).find('> ul, > ul > li > ul.list_in_column').delay(400).show(1);
}, function () {
$(this).find('> ul, > ul > li > ul.list_in_column').delay(200).hide(1);
});

соответственно это выпадающее меню при наведении. При этом варианте, каждый раз при проходе мышки вылазит меню и получается каша (это я так, для себя пишу). Хочу сделать, чтобы меню вылазило только при задержке на нём мышки. Я уже поняла, что надо использовать setTimeout, mouseenter, mouseleave. В общем, крутила я его, крутила, ну никак не получается заставить его работать((
Помогите, пожалуйста, решить вопрос...
 
var tmr = null;
$('#nav > li').hover(function () {
var th = this;
tmr = setTimeout(function(){
var top = $(th).position().top + $(th).height();
$(th).find('> ul').css({top: top});
$(th).find('> ul, > ul > li > ul.list_in_column').stop().delay(400).show(1);
} , 500);
}, function () {
clearTimeout(tmr);
$(this).find('> ul, > ul > li > ul.list_in_column').stop().delay(200).hide(1);
});
 
var tmr = null;
$('#nav > li').hover(function () {
var th = this;
tmr = setTimeout(function(){
var top = $(th).position().top + $(th).height();
$(th).find('> ul').css({top: top});
$(th).find('> ul, > ul > li > ul.list_in_column').stop().delay(400).show(1);
} , 500);
}, function () {
clearTimeout(tmr);
$(this).find('> ul, > ul > li > ul.list_in_column').stop().delay(200).hide(1);
});
Большое спасибо! Наконец-то работает)
 
Назад
Сверху