2013-06-18 239 views
1

我使用Brad Frost的這種響應方式的resoponsive下拉模式 - 並且由於某些指向同一頁面上的錨點的鏈接,我正在尋找一種方法來強制將下拉菜單點擊時關閉,而不僅僅是鼠標移出。點擊隱藏下拉菜單

模式是在這裏:這使得它的工作http://codepen.io/bradfrost/full/qwJvF

代碼是在這裏:

<script> 
$(document).ready(function() { 
    $('body').addClass('js'); 
     var $menu = $('#menu'), 
      $menulink = $('.menu-link'), 
      $menuTrigger = $('.has-subnav > a'); 

    $menulink.click(function(e) { 
     e.preventDefault(); 
     $menulink.toggleClass('active'); 
     $menu.toggleClass('active'); 
    }); 

    $menuTrigger.click(function(e) { 
     e.preventDefault(); 
     var $this = $(this); 
     $this.toggleClass('active').next('ul').toggleClass('active'); 
    }); 

    }); 

</script> 

我需要做的是採取。主動類了,的onclick。嘗試了幾種方法,但沒有一種方法是正確的。

非常感謝,

-m

+0

如果您只在鏈接不是錨點或任何模式時才調用preventDefault,該怎麼辦? – Fabi

+0

聽起來好像它可以工作 - 它會是什麼樣子? – Martin

回答

0

更新

嘗試是這樣的(這是醜陋的,但適用於now..maybe以後可以解決它):

<script> 
    $(document).ready(function() { 
     $('body').addClass('js'); 
     var $menu = $('#menu'), 
     $menulink = $('.menu-link'), 
     $menuTrigger = $('.has-subnav > a'); 
     // added to deal with the submenu level 
     $submenuTrigger = $('ul.level-2 li > a'); 

     $menulink.click(function(e) { 
     e.preventDefault(); 
     $menulink.toggleClass('active'); 
     $menu.toggleClass('active'); 
     }); 

     $menuTrigger.click(function(e) { 
     e.preventDefault(); 
     var $this = $(this); 
     $this.toggleClass('active').next('ul').toggleClass('active');   
     }); 

     // on click, hides the submenu 
     $submenuTrigger.click(function(e) { 
     e.preventDefault(); 
     $('ul.level-2').css('display','none'); 
     }); 

     // on mouseenter on the main menu, shows the submenu again 
     $menuTrigger.mouseenter(function(e) { 
     var $this = $(this); 
     if ($(this).siblings('ul').attr('class') == 'level-2') 
     { 
      $this.siblings('ul').show(); 
     } 
     }); 

     }); 
    //@ sourceURL=pen.js 
    </script> 
+0

謝謝Fabi。這並不奏效。該菜單需要去#links - 它只需要消失後。這在桌面上並不是真正的問題,因爲移動光標幾乎可以做到這一點。但在觸摸屏上,菜單保持下降狀態,直到您點擊其他地方。 – Martin

+0

我很困惑。你說菜單需要鏈接到錨點#鏈接 - 這會自動關閉菜單... – Fabi

+0

試圖讓所有東西都變成密碼,而不能。 new.chromavision.net是該網站。服務中存在兩個問題:在移動設備上,單擊服務子導航鏈接需要關閉菜單切換。在桌面上,點擊一個服務subnav需要隱藏下拉單擊 - 否則它保持打開,直到你點擊其他地方。真的很感謝你看着這個。 – Martin