好的,我有一个javascript下拉菜单。下拉菜单工作正常,但当我单击其中一个下拉链接时链接不起作用。我认为这与我的“return false / true”设置有关。
使用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>
因此,当我删除“return false”语句时,我的链接可以工作,但是我的下拉菜单不会保持打开状态。当我删除return false语句时,下拉菜单将快速打开然后关闭(几乎没有给用户点击项目的时间)。我需要在此代码中更改什么,以便当我单击下拉列表时它保持打开状态,然后当其中一个下拉项目/链接单击时,该链接实际上有效。
同样,现在下拉功能正常工作(当它点击它保持打开直到再次点击)但是当我点击下拉项目链接不起作用时,新页面不会加载。谢谢您的帮助。
感谢您的回复,但它仍然不适合我。这是我的整个代码:
<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>
我再次希望在单击文档时关闭菜单,除非单击菜单本身。感谢。
答案 0 :(得分:0)
您可以尝试仅阻止下拉菜单的默认行为,而不是返回false:
function ddMenu_open(event)
{
ddMenu_close(e);
var submenu = $(this).find('ul');
if(submenu){
ddmenuitem = submenu.css('visibility', 'visible');
return false;
e.preventDefault();
}
return true;
}
注意:您不需要在ddMenu_open中声明参数,也不需要在ddMenu_open结束时返回true。但我知道你来自哪里。顺便说一下,这本书可以帮助你提高速度:http://eloquentjavascript.net/