![](/img/trans.png)
[英]How to hide dropdown menu when clicking on menu link with vanilla JS?
[英]Link in JS dropdown menu does not redirect
因此,我整天都在这里工作,但是由于不是一个好的JS编码器,这使我陷入了困境。
当我单击下拉菜单中指向“ test.html”的链接时,没有任何反应。 即使浏览器清楚地表明悬停时处于活动状态的“ test.html”链接也不会重定向。
这是JS代码。
var timeout = 500;
var closetimer = 0;
var ddmenuitem = 0;
function headermenu_open(event)
{
headermenu_canceltimer();
headermenu_close();
var submenu = $(this).find('ul');
if(submenu){
ddmenuitem = submenu.css('visibility', 'visible');
return false;
}
return true;
}
function headermenu_close()
{ if(ddmenuitem) ddmenuitem.css('visibility', 'hidden');}
function headermenu_timer()
{ closetimer = window.setTimeout(headermenu_close, timeout);}
function headermenu_canceltimer()
{ if(closetimer)
{ window.clearTimeout(closetimer);
closetimer = null;}}
$(document).ready(function()
{ $('#headermenu li').bind('click', headermenu_open);
$('#headermenu > li').bind('mouseout', headermenu_timer);
$('#headermenu > li').bind('mouseover', headermenu_canceltimer);
});
document.onclick = headermenu_close;
这是菜单的一部分。
<ul id="headermenu">
<li><a href="#">Høyttalere</a>
<ul>
<li><a href="pages/test.html">Test</a></li>
</ul>
</li>
如果任何人都有正确的代码段添加或在代码中看到错误,我将非常高兴!
因为这行代码
if(submenu){
ddmenuitem = submenu.css('visibility', 'visible');
return false;
}
它进入此块并返回false
这等效于调用e.preventDefault()
和e.stopPropagation()
,因此链接不会跟随。
也
if(subMenu)
//返回if(subMenu)
y值。因为它是一个空jQuery对象
更好的检查方法是检查长度
if(subMenu.length)
码
function headermenu_open(event){
event.stopPropagation(); // need to stop the Propagation first
headermenu_canceltimer();
headermenu_close();
var submenu = $(this).find('ul');
if(submenu.length){
ddmenuitem = submenu.css('visibility', 'visible');
return false;
}
return true;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.