2016-05-18 3 views
2

小さな画面があるときにこのスクリプトを作成して、クリックしてモバイルをタップしてドロップダウンメニューを表示します。今、それはこの画面サイズで動作しますが、私はそれがホバリングになることを望んでいる人々がクリックしなければならないより大きなサイズではありません。マウスオーバー後もホバードロップダウンがアクティブのままになる

これは、あなたはそれが何かをしない、あなたはそれの上に置くと、ブロックとして表示するメニューを言っているので、それはです私のコード

$(document).ready(function() { 

    var open = false; 

     if ($(window).width() > 767) { 
      $(".dropdown").hover(
      function(){ 
       $('ul.nav li.dropdown:hover > ul.dropdown-menu').css('display','block'); 
       console.log('display block de nav HOVER'); 
      }); 
     } 
    else { 
     console.log('kleiner'); 

     $(".dropdown").click(
      function(){ 
       if (open){ 
        $('ul.nav li.dropdown:hover > ul.dropdown-menu').css('display','none'); 
        console.log('display none de nav'); 
       } else { 
       $('ul.nav li.dropdown:hover > ul.dropdown-menu').css('display','block'); 
        console.log('display block de nav'); 
       } 

       open = !open; 

      }); 
     } 
}); 

HTML

<nav id="navbar" class="navbar navbar-default"> 
       <div class="container-fluid"> 
        <div class="navbar-header"> 
         <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#typo-navbar-collapse-1" aria-expanded="false"> 
          <span class="sr-only">Toggle navigation</span> 
          <span class="icon-bar"></span> 
          <span class="icon-bar"></span> 
          <span class="icon-bar"></span> 
         </button> 
         @if(Sentinel::guest()) 
          <a class="navbar-brand" href="{{ route('auth.login') }}">Typografics Academy</a> 
         @elseif(Sentinel::inRole('user')) 
          <a class="navbar-brand" href="{{ route('user.dashboard') }}">Typografics Academy</a> 
         @elseif(Sentinel::inRole('admin') || Sentinel::inRole('super')) 
          <a class="navbar-brand" href="{{ route('admin.dashboard') }}">Typografics Academy</a> 
         @endif 
        </div> 

        <div class="collapse navbar-collapse" id="typo-navbar-collapse-1"> 
         <ul class="nav navbar-nav"> 

          @if(!Sentinel::guest()) 

           @if(Sentinel::inRole('user')) 
            <li {{ Request::is('/results*') ? 'class=active' : ''}}><a href="{{ route('user.results') }}">Results</a></li> 
           @elseif(Sentinel::inRole('admin') || Sentinel::inRole('super')) 
            <li {{ Request::is('admin/users*') ? 'class=active' : ''}}><a href="{{ route('users.overview') }}">Gebruikers</a></li> 
            <li {{ Request::is('admin/tests*') ? 'class=active' : ''}}><a href="{{ route('tests.overview') }}" >Tests</a></li> 
            <li {{ Request::is('admin/profiles*') ? 'class=active' : ''}}><a href="{{ route('profiles.overview') }}">Profielen</a></li> 
            <li {{ Request::is('admin/results*') ? 'class=active' : ''}}><a href="{{ route('results.overview') }}">Results</a></li> 

            @if(Sentinel::inRole('super')) 
             <li {{ Request::is('admin/questions*') ? 'class=active' : ''}}><a href="{{ route('questions.overview') }}">Vragen</a></li> 
             <li {{ Request::is('admin/categories*') ? 'class=active' : ''}}><a href="{{ route('categories.overview') }}">{{trans('master.categories')}}</a></li> 
             <li {{ Request::is('admin/companies*') ? 'class=active' : ''}}><a href="{{ route('companies.overview') }}">Bedrijven</a></li> 
            @endif 

            <li class="dropdown"> 
             <a href="#" role="button" aria-haspopup="true" aria-expanded="false"> <span class="glyphicon glyphicon-plus"></span> Nieuw <span class="caret"></span></a> 

             <ul class="dropdown-menu"> 
              <li {{ Request::is('admin/users/new') ? 'class=active' : ''}}><a href="{{ route('users.new') }}">{{trans('master.user')}}</a></li> 
              <li {{ Request::is('admin/tests/new') ? 'class=active' : ''}}><a href="{{ route('tests.new.1') }}">{{trans('master.test')}}</a></li> 
              <li {{ Request::is('admin/profiles/new') ? 'class=active' : ''}}><a href="{{ route('profiles.new') }}">{{trans('master.profile')}}</a></li> 
              @if(Sentinel::inRole('super')) 
               <li {{ Request::is('admin/questions/new') ? 'class=active' : ''}}><a href="{{ route('questions.new') }}">{{trans('master.question')}}</a></li> 
               <li {{ Request::is('admin/categories/new') ? 'class=active' : ''}}><a href="{{ route('categories.new') }}">{{trans('master.category')}}</a></li> 
               <li {{ Request::is('admin/subcategories/new') ? 'class=active' : ''}}><a href="{{ route('subcategories.new.without') }}">{{trans('master.subcategory')}}</a></li> 
               <li {{ Request::is('admin/companies/new') ? 'class=active' : ''}}><a href="{{ route('companies.new') }}">{{trans('master.company')}}</a></li> 
              @endif 
             </ul> 



            </li> 


           @endif 
          @endif 
         </ul> 
         @if(!Sentinel::guest()) 
          <ul class="nav navbar-nav navbar-right"> 
           <li><a class="userprofiel" href="#">{{ucwords(Sentinel::check()->first_name)}}</a></li> 
           <li><a class="logout" href="{{ route('auth.logout') }}">Logout</a></li> 
          </ul> 
         @else 
          <ul class="nav navbar-nav navbar-right"> 
           <li {{ Request::is('auth/login') ? 'class=active' : ''}}><a href="{{ route('auth.login') }}">Login</a></li> 
          </ul> 
         @endif 
        </div> 
       </div> 
      </nav> 
+0

指定したドロップダウンにHTMLを追加できますか? – Pugazh

+0

ウィンドウのサイズを変更すると問題が発生しますか?実際のデバイスではそうではありません。試してみてください 'window.onresize'イベント – Morpheus

+0

@Pugazh HTMLが追加されました – Pixelsquare

答えて

2

これを試してみてください:

$(document).ready(function() { 

    var open = false; 

     if ($(window).width() > 767) { 
      $(".dropdown").hover(
      function(){ 
       $(this).find('.dropdown-menu').css('display','block'); 
       console.log('display block de nav HOVER'); 
      }, function() { 
       $(this).find('.dropdown-menu').css('display','none'); 
      }); 
     } 
    else { 
     console.log('kleiner'); 

     $(".dropdown").click(
      function(){ 
       if (open){ 
        $('ul.nav li.dropdown:hover > ul.dropdown-menu').css('display','none'); 
        console.log('display none de nav'); 
       } else { 
       $('ul.nav li.dropdown:hover > ul.dropdown-menu').css('display','block'); 
        console.log('display block de nav'); 
       } 

       open = !open; 

      }); 
     } 
}); 

出力:http://output.jsbin.com/wekepi

コード:http://jsbin.com/wekepi/edit?js

jQueryの方法:.hover(handlerIn, handlerOut)

参考:https://api.jquery.com/hover/

0

です。

.blockのクラスを追加し、ホバーでtoggleClassを追加し、必要に応じて追加して削除します。

.block { display:block; } 


     $(".dropdown").hover(
     function(){ 
      $('ul.nav li.dropdown:hover > ul.dropdown-menu').toggleClass('block'); 
      console.log('display block de nav HOVER'); 
     }); 
0

私は問題の正しい解決策を見つけた@Surender Lohiaの回答に基づいて。

関連する問題