2013-06-18 200 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