2016-07-22 4 views
0

мой Javascript, который должен открыть 2-й слой моей навигации, не работает, и я не знаю, почему он не работает. Я наблюдаю за чем-то очевидным? Его немного теплый в моем офисе atm. : DBootstrap Navigation 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 'ближайшее()' traverse ** 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