Итак, у меня есть раскрывающееся меню javascript. Выпадающее меню работает нормально, но когда я нажимаю одну из выпадающих ссылок, ссылка не работает. Я думаю, что это имеет какое-то отношение к моей настройке «return false/true».Return False - Ссылка Не работает - Drop Down
Javascript:
function ddMenu_open(event)
{
ddMenu_close();
var submenu = $(this).find('ul');
if(submenu){
ddmenuitem = submenu.css('visibility', 'visible');
return false;
}
return true;
}
function ddMenu_close()
{ if(ddmenuitem) ddmenuitem.css('visibility', 'hidden'); }
function ddMenu_timer()
{ closetimer = window.setTimeout(ddMenu_close, timeout); }
function ddMenu_canceltimer()
{ if(closetimer)
{ window.clearTimeout(closetimer);
closetimer = null;}}
$(document).ready(function()
{ $('#ddMenu > li').bind('click', ddMenu_open);
$('#ddMenu li ul').bind('click', ddMenu_timer);
});
document.onclick = ddMenu_timer;
}
</script>
Так что, когда я удалить «возвращение ложным» заявление мои ссылки работают, но тогда мой выпадающее меню не остается открытым. Когда я удаляю возвращаемый ложный оператор, выпадающее меню будет открыто быстро, а затем закроется (едва пользовательское время щелкнет элемент). Что мне нужно изменить в этом коде, так что, когда я нажимаю на раскрывающееся меню, он остается открытым, а затем, когда один из выпадающих элементов/ссылок нажимает ссылку, на самом деле работает.
Опять же, сейчас функция раскрывающегося списка работает нормально (когда она нажимается, она остается открытой до тех пор, пока не появится другой щелчок), но когда я нажимаю на раскрывающийся элемент, ссылка не работает, новая страница не загружается. Спасибо за помощь.
спасибо за ответы, но он по-прежнему не работает для меня. Вот весь мой код:
<script type="text/javascript">
function ddMenu() {
var timeout = 500;
var closetimer = 0;
var ddmenuitem = 0;
function ddMenu_open(e)
{
ddMenu_close();
var submenu = $(this).find('ul');
if(submenu){
ddmenuitem = submenu.css('visibility', 'visible');
}
}
function ddMenu_close()
{ if(ddmenuitem) ddmenuitem.css('visibility', 'hidden'); }
function ddMenu_timer()
{ closetimer = window.setTimeout(ddMenu_close, timeout); }
function ddMenu_canceltimer()
{ if(closetimer)
{ window.clearTimeout(closetimer);
closetimer = null;}}
$(document).ready(function()
{ $('#ddMenu > li').bind('click', ddMenu_open);
$('#ddMenu li ul').bind('click', ddMenu_timer);
});
document.onclick = function(ev){
if(ev.target.nodeName !== 'ul') {
ddMenu_close();
}
};
}
</script>
снова я хочу выпадающие менюшка, чтобы закрыть, когда документ нажми когда само меню нажато кроме. Благодарю.
Было бы полезно настроить jsfiddle вашего кода. – Jasper
Кажется, что 'document.onclick = ddMenu_timer;' запускает таймер каждый раз, когда вы нажимаете. – Mathletics
'var submenu = $ (this) .find ('ul'); if (подменю) {} 'Это должно быть' if (submenu.length) {} '. jQuery всегда возвращает объект (даже если он не имеет элементов). 'if ([])' и 'if ($())' оба истины. –