[英]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.