Помогите с динамическим меню!
Недавно начал пробывать себя в программировании, пишу первый сайт, столкнулся с такой проблемой с динамическим меню: охота сделать чтобы при наведении на "кнопку" выпадало меню через полсекунды, но если курсор за эти полсекунды убирают, то меню не выпапло....дык вот, с первым я справился с помощью setTimeout, а вот как отложить setTimeout не могу придумать мучался с clearTimeout но ниче толком не получилось...подскажите пожалуйста как победить этого зверя
Заранее спасибо |
а ты посмотри сколько раз setTimeout у тебя в очередь становиться за время что курсор находиться над кнопкой. введи флаг если раз он стал в очередь -то больше не ставить
|
Спасибо, понял в чем проблема..
Цитата:
|
у тебя есть событие -онмаусовер
функция вызываемые при событии
var flag=0;
function name()
{
if (flag!=1){
setTimeout(.....);
flag=1;
}
ну а когда выплниться сворачивание меню флаг обнулишь |
БОльшое спасибо!!))
|
Помогите с с динамическим меню)) еще раз)) вобщем проблема такая: работает только первые 2 строчки (после case '1'). при a=2 также ниче не работает((( не пойму в чем дело...$('th#submenu1').mouseover(...) пробывал выносить из условия все равно не работает...помогите пожалуйста!! есть подозрение что ниже этого условия ни одно событие не работает....не знаю в чем проблема
$(document).mousemove( function(){
switch(a) {
case '1':
$('th#1').mouseover(function(){showSubmenu;});
$('th#1').mouseout(function(){hideSubmenu=setTimeout ("$('div.submenu#sub1').hide();flagSub=0;",100)});
$('th#submenu1').mouseover(function(){clearTimeout(hideSubmenu);
submenu.css('background-color','red');
})
break;
case '2':
$('th#2').mouseover(function(){showSubmenu;})
$('th#2').mouseout(function(){hideSubmenu=setTimeout("$('div.submenu#sub2').hide();flagSub=0",100)})
break;
}
});
});
|
$('th#1').mouseover(function(){showSubmenu;});
showSubmenu что это вызов какойто доп функции? если да(джиквери не знаю) возможно должно выглядеть как showSubmenu()? |
$(document).mousemove( function(){
switch(a) {
case '1':
$('th#1').mouseover(function(){showSubmenu;});
$('th#1').mouseout(function(){hideSubmenu=setTimeout ("$('div.submenu#sub1').hide();flagSub=0;",100)});
$('th#submenu1').mouseover(function(){clearTimeout(hideSubmenu);
submenu.css('background-color','red');
})-'это switch(a) закрывается? ну и почему должен второй блок сработать?
break;
case '2':
$('th#2').mouseover(function(){showSubmenu;})
$('th#2').mouseout(function(){hideSubmenu=setTimeout("$('div.submenu#sub2').hide();flagSub=0",100)})
break;
}-закрытие switch(a)
});-закрытие $(document).mousemove( function(){
})-лишняя по идее;
|
$('th#submenu1').mouseover(function(){clearTimeout (hideSubmenu);
оригинально очищать очередь-если функция выполняется уже то в очереди её уже не будет |
dmitriymar не знаю чтобы делал без Вас!! спасибо что возитесь со мной
showSubmenu- переменная объявленная ранее, в ней написана SetTimeout(...,500) (также как и hideSubmenu в этом коде)
$(document).mousemove( function(){
switch(a) {
case '1':
$('th#1').mouseover(function(){showSubmenu;});
$('th#1').mouseout(function(){hideSubmenu=setTimeout ("$('div.submenu#sub1').hide();flagSub=0;",100)}); '-если я правельно понял как работает эта функция то здесь она ставится в очередь, пробывал ставить 1секунду, толку мало
$('th#submenu1').mouseover(function(){
clearTimeout(hideSubmenu); -а при наведении очищается очередь
submenu.css('background-color','red');
}) - здесь закрывается анонимная функция после $('th#submenu1').mouseover(function(){
break;
case '2':
$('th#2').mouseover(function(){showSubmenu;})
$('th#2').mouseout(function(){hideSubmenu=setTimeout("$('div.submenu#sub2').hide();flagSub=0",100)})
break;
}
});
});--точно! лишняя, захватил нечайно
|
| Часовой пояс GMT +3, время: 05:32. |