Динамическое меню с задержкой

R
На сайте с 01.12.2012
Offline
86
819

У меня на сайте стоит простенькое меню

Код следующий

$(document).ready(function(){

$('#topmenu li.sublnk').hover(
function() {
$(this).addClass("selected");
$(this).find('ul').stop(true, true);
$(this).find('ul').show('fast');
},
function() {
$(this).find('ul').hide('fast');
$(this).removeClass("selected");
}
);
});

Подскажите как реализовать небольшую задержку, чтоб при наведении и когда увожу мышку была задержка примерно в 200 миллисекунд, задать время перед раскрытием, и перед закрытием меню.

Пытаюсь использовать setTimeout, но меню вообще перестаёт работать

$(document).ready(function(){

$('#topmenu li.sublnk').hover(
setTimeout(function() {
$(this).addClass("selected");
$(this).find('ul').stop(true, true);
$(this).find('ul').show('fast');
}, 200);
setTimeout(function() {
$(this).find('ul').hide('fast');
$(this).removeClass("selected");
}, 200);
);
});

Подскажите что я не так делаю? Или может как-то по другому реализовать?

Заранее признателен за подсказку.

eis
На сайте с 18.10.2008
Offline
473
eis
#1

Radrigo,

$(this).find('ul').show(200); 
- Здесь я покупаю вечные ссылки на свои сайты! (https://backlinkator.com) - сотни ссылок за копейки
R
На сайте с 01.12.2012
Offline
86
#2
eis:
Radrigo,
$(this).find('ul').show(200); 

К сожалению не то

изменяя значение .show() я задаю время самой анимации при открытии меню, а .hide() я так понимаю это время анимации при раскрытии меню. При использовании ключевого слова fast анимация и так длится 200 миллисекунд

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

S3
На сайте с 29.03.2012
Offline
367
#3

Radrigo, Почитайте 2 минуты документацию и потом добавьте в css свойство transition и будет вам счастье

E8
На сайте с 03.09.2012
Offline
28
#4
Radrigo:
К сожалению не то

изменяя значение .show() я задаю время самой анимации при открытии меню, а .hide() я так понимаю это время анимации при раскрытии меню. При использовании ключевого слова fast анимация и так длится 200 миллисекунд

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

.delay(200, function(){$(this).show('fast')})

как то так

R
На сайте с 01.12.2012
Offline
86
#5
Sly32:
Radrigo, Почитайте 2 минуты документацию и потом добавьте в css свойство transition и будет вам счастье

Максимум что мне удалось добиться это задержка смены фона и цвета ссылки при наведении используя transition-delay

Earlo87:
.delay(200, function(){$(this).show('fast')})


как то так

Как именно это прописать?

Такой вариант не работает, меню вообще перестают открываться

$(document).ready(function(){

$('#topmenu li.sublnk').hover(
.delay(200, function() {
$(this).addClass("selected");
$(this).find('ul').stop(true, true);
$(this).find('ul').show('fast');
}),

function() {
$(this).find('ul').hide('fast');
$(this).removeClass("selected");
}
);
});
E8
На сайте с 03.09.2012
Offline
28
#6
Radrigo:

Как именно это прописать?
Такой вариант не работает, меню вообще перестают открываться

$(document).ready(function(){
$('#topmenu li.sublnk').hover(
function() {
$(this).addClass("selected");
$(this).find('ul').stop(true, true);
$(this).find('ul').delay(200).show('fast');
},

function() {
$(this).find('ul').delay(200).hide('fast');
$(this).removeClass("selected");
}
);
});

так попробуйте и задержка в 200 мс будет слишком быстрая аозможно вы её незаметите, чтобы было более заметно можно поэксперементировать с временем

R
На сайте с 01.12.2012
Offline
86
#7
Earlo87:
$(document).ready(function(){

$('#topmenu li.sublnk').hover(
function() {
$(this).addClass("selected");
$(this).find('ul').stop(true, true);
$(this).find('ul').delay(200).show('fast');
},

function() {
$(this).find('ul').delay(200).hide('fast');
$(this).removeClass("selected");
}
);
});


так попробуйте и задержка в 200 мс будет слишком быстрая аозможно вы её незаметите, чтобы было более заметно можно поэксперементировать с временем

Спасибо вам огромное, всё работает=)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий