Помогите с динамическим меню!
Недавно начал пробывать себя в программировании, пишу первый сайт, столкнулся с такой проблемой с динамическим меню: охота сделать чтобы при наведении на "кнопку" выпадало меню через полсекунды, но если курсор за эти полсекунды убирают, то меню не выпапло....дык вот, с первым я справился с помощью 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, время: 18:24. |