1

だから私は一日中これを持っていましたが、良い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>

誰かが追加する適切なスニペットを持っているか、コードの間違いを見つけることができれば、私は非常に嬉しく思います!

4

1 に答える 1

2

このコード行が原因です

if(submenu){
   ddmenuitem = submenu.css('visibility', 'visible');
   return false;
}

このブロックに入り、false を返します

これは呼び出しe.preventDefault()と同等でe.stopPropagation()あり、そのためリンクはたどりません。

また

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;
}

働くフィドル

于 2013-06-20T23:06:08.570 に答える