2013-05-27 86 views
0

我做了一個下拉菜單,使用無序列表,列表項,jQuery和CSS。當我點擊它們時,沒有任何菜單項(它們是錨點)。當我點擊錨時發生的所有事情都是菜單消失。如果我右鍵點擊一個錨點,然後在新標籤中打開它,它會按照我的預期重新定向。 Here是一個顯示我的代碼和問題的jFiddle。請注意,菜單有點難以打開,您必須單擊圖標的底部。如果任何人可以建議爲什麼錨不正確打開它將不勝感激。爲什麼我的定位標記不起作用?

HTML:

<span class="menu_item" id="settings"> 
    <ul> 
     <li> 
      <a href="#" onclick="return false;">&#9788;</a> 
      <ul> 
       <li> 
        <a href="/admin.php">Admin Center</a> 
       </li> 
       <li> 
        <a href="/login/process.php">Logout</a> 
       </li> 
      </ul> 
     </li> 
    </ul> 
</span> 
+2

始終把**的**都在問題本身*相關的代碼和標記*,不只是鏈接(甚至沒有jsFiddle)。小提琴是一個很好的*附件*,但問題應該是孤立的。爲什麼:http://meta.stackexchange.com/questions/118392/add-stack-overfow-faq-entry-or-similar-forputing-code-in-the-question –

回答

4

return false;你在settings_open做了兩兩件事,其中之一是取消默認操作(鏈接如下)。請記住,點擊從後代元素直到祖先元素。

如果您將return false;更改爲event.stopPropagation()而不是阻止默認值,並且鏈接正常工作。 (但也沒有理由從事件處理程序返回true。)

Fiddle

function settings_open(event){ 

    settings_canceltimer(); 
    settings_close(); 
    var submenu = $(this).find('ul'); 

    if(submenu){ 
     ddmenuitem = submenu.css('visibility', 'visible'); 
     event.stopPropagation(); // <== Change here 
    } 

    // Removed return true here 
} 
+0

絕對完美,謝謝! –

相關問題