2016-07-22 160 views
0

我的Javascript應該打開我的導航的第二層不起作用,我不知道爲什麼它不工作。我是否監督明顯的事情?它在我的辦公室裏有點溫暖。 :dBootstrap導航Javascript無法正常工作

$('.submenu').click(function(e) { 
      e.preventDefault(); 
      if ($(this).closest("ul .sub").hasClass("hide")) { 
      $(this).closest("ul .sub").removeClass('hide'); 
      $(this).closest("ul sub").addClass('show'); 
      } 
      else { 
      $(this).closest("ul sub").addClass('hide'); 
      $(this).closest("ul sub").removeClass('show'); 
      } 
    }); 

的HTML:

<nav class="navbar navbar-default navbar-fixed-top"> 
     <!-- Collect the nav links, forms, and other content for toggling --> 
     <div class="collapse navbar-collapse"> 
      <div class="centering"> 
      <ul class="nav navbar-nav"> 
       <li><a class="navbar-brand" href="#"><img id="navlogo" alt="trlololol" src="gfx/Logo_Friedhof_Bildmarke-01.svg"></a></li> 
       <li class="dropdown"> 
       <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Dropdown<span class="nav-img"></span></a> 
       <ul class="dropdown-menu"> 
        <li><a href="#">Action</a></li> 
        <li><a href="#">Another action</a></li> 
        <li><a href="#">Something else here</a></li> 
        <li class="submenu dropdown-toggle"><a href="#">Next menu level<span class="nav-img"></span></a></li> 
        <ul class="sub hide"> 
         <li><a href="#">Blablabla</a></li> 
         <li><a href="#">Blablubla</a></li> 
         <li><a href="#">Blablibla</a></li> 
        </ul> 
        <li><a href="#">One link</a></li> 
       </ul> 
       </li> 
       <li class="dropdown"> 
       <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Dropdown32<span class="nav-img"></span></a> 
       <ul class="dropdown-menu"> 
        <li><a href="#">Action</a></li> 
        <li><a href="#">Another action</a></li> 
        <li><a href="#">Something else here</a></li> 
        <li class="submenu"><a href="#">Next menu level<span class="nav-img"></span></a></li> 
        <ul class="sub hide"> 
         <li><a href="#">Blablabla</a></li> 
         <li><a href="#">Blablubla</a></li> 
         <li><a href="#">Blablibla</a></li> 
        </ul> 
+0

嘗試使用jsfiddle.net代碼。 –

+0

您使用e.preventDefault()。檢查您嘗試導航的方法。它是否被觸發? – Vitalii

+1

jQuery'nearest()'遍歷** UP ** DOM樹,你確定要這麼做嗎?我想你需要選擇孩子,像這樣:$(「ul .sub」,$(this))''而不是'$(this).closest(「ul sub」)' – pumpkinzzz

回答

1

你應該巢您ul裏面的你li這樣的:

   <li class="submenu"><a href="#">Next menu level<span class="nav-img"></span></a> 
       <ul class="sub hide"> 
        <li><a href="#">Blablabla</a></li> 
        <li><a href="#">Blablubla</a></li> 
        <li><a href="#">Blablibla</a></li> 
       </ul> 
       </li> 

然後,你可以這樣做:

$('.submenu').click(function(e) { 
    $(this).children('ul.sub').toggleClass('hide') 
}); 

小提琴:https://jsfiddle.net/hubkefw7/

+0

謝謝,多數民衆贊成在工作。 – Pingbeat