【发布时间】:2015-09-21 16:17:58
【问题描述】:
好的,我有一个 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>
再次,我希望在单击文档时关闭下拉菜单,但单击菜单本身时除外。谢谢。
【问题讨论】:
-
设置代码的 jsfiddle 会很有帮助。
-
似乎
document.onclick = ddMenu_timer;每次点击都会启动计时器。 -
var submenu = $(this).find('ul'); if(submenu){}这应该是if(submenu.length){}。 jQuery 总是返回一个对象(即使它没有元素)。if([])和if($())都是真的。 -
即使我删除 document.onclick = ddMenu_time;链接仍然无效。
-
你的缩进/大括号风格真的很糟糕。
标签: javascript jquery ajax