簡體   English   中英

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM