Rhythm
Rhythm

Reputation: 21

Hover intent javascript not working on div structure menus

I am trying to add hover intent.js in for menus for smooth hovering effect, but is is not working. Although it work well if i add it on ul, but not work if i add ul inside div.

Please find the code below which i am trying to implement. I am using hover intent library with bootstrap

 <link href="http://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.1.1/css/bootstrap.min.css" type="text/css" rel="stylesheet">
<script src="http://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.1.1/js/bootstrap.min.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/jquery.hoverintent/2013.03.11/hoverintent.min.js"></script>
<script>     
   jQuery(document).ready(function () {
     "use strict";           
     var $ = jQuery.noConflict();

     function showMenu() {
       $(this).removeClass("drop-collapsed");
       $(this).addClass("open");
     }
     function hideMenu(){
       $(this).removeClass("open");
       var $dropdown = $(".dropdown");              

       $dropdown.each(function () {
         $(this).addClass("drop-collapsed");
       }
      );
     }          

     var $dropdown = $(".dropdown");                        
     $dropdown.each(function () {
       var $this = $(this);
       var $dropmenu = $this.find(".dropdown-menu");
       $dropmenu.css("height", $dropmenu.outerHeight());

       $this.addClass("drop-collapsed");
     }
    );     

     // dropdown menu hover intent
     var hovsettings = {
       timeout:0,
       interval: 0,
       over: showMenu,
       out: hideMenu
     }

     $(".dropdown").hoverIntent(hovsettings);
   }
   );   
</script>
<div class="navbar navbar-default navbar-static-top" role="navigation">
<div class="container">
<ul class="nav navbar-nav">
   <li class="dropdown">
      <a href="#" class="dropdown-toggle" data-toggle="dropdown">
      Dropdown 
      <b class="caret">
      </b>
      </a>
      <ul class="dropdown-menu">
         <li>
            <a href="#">
            Action
            </a>
         </li>
         <li>
            <a href="#">
            Another action
            </a>
         </li>
      </ul>
   </li>
</ul>

Upvotes: 1

Views: 743

Answers (1)

Lyubimov Roman
Lyubimov Roman

Reputation: 1269

Look at this Link.

 jQuery(document).ready(function () {
      "use strict";           
      var $ = jQuery.noConflict();

      function showMenu() {
        $(this).removeClass("drop-collapsed");
        $(this).addClass("open");
      }
      function hideMenu(){
        $(this).removeClass("open");
        var $dropdown = $(".dropdown");
        //var $dropdown= $(".li.has-childern")

        $dropdown.each(function () {
          $(this).addClass("drop-collapsed");
        }
       );
      }          

      var $dropdown = $(".dropdown");
      //var $dropdown= $(".li.has-childern");

      $dropdown.each(function () {
        var $this = $(this);
        var $dropmenu = $this.find(".dropdown-menu");
        $dropmenu.css("height", $dropmenu.outerHeight());

        $this.addClass("drop-collapsed");
      }
     );


      // dropdown menu hover intent
      var hovsettings = {
        timeout:0,
        interval: 0,
        over: showMenu,
        out: hideMenu
      }
      ;


      $(".dropdown").hoverIntent(hovsettings);
    }
    );

I set dropdown-menu class only for top div container. You need to fix styles to it looks good.

Upvotes: 0

Related Questions