2014-02-13 114 views
0

我想要做的是從下拉菜單中刪除打開的類,以便菜單顯示在懸停上而不是點擊時顯示,但我無法將其刪除。也許我不明白這是如何工作的。我所知道的是,我設法做到了,直到mouseleave函數。我使用的引導3.從父元素中刪除類

HTML

<div class="dropdown"> 
    <a data-toggle="dropdown" data-target="#" href="#" class="active"> Home <span class="main-text-color light">+</span> </a> 
    <ul class="dropdown-menu" role="menu"> 
     <li>home shop</li> 
     <li>home events</li> 
     <li>home paralax</li> 
     <li>home blog</li> 
     <li>home portfolio</li> 
     <li>home corporate : v1</li> 
     <li>home corporate : v2</li> 
     <li>home corporate : v3</li> 
     <li>home corporate : v4</li> 
     <li>home corporate : v5</li> 
     <li>home corporate : v6</li> 
     <li>create your own <i class="fa fa-play-circle-o"> </i> </li> 
    </ul> 
</div> 

的Javascript

$('.dropdown').hover(function() { 
    $(this).addClass("open"); 
    $(this).children('.dropdown-menu').mouseleave(function() { 
     $(this).parent().removeClass("open"); 
    }); 
}); 

回答

2

一些意見

  • 因爲你只有一個回調函數的懸停呼叫,它將得到執行dropdown事件
  • 的mouseenter和mouseleave事件10
  • 這將導致多個鼠標離開事件被註冊到dropdown-menu元素
  • 您的代碼不會刪除的公開課,如果用戶沒有進入dropdown-menu元素,而不是搬出了下拉菜單,而不會進入dropdown-menu下拉將保持可見

我認爲這會做

$('.dropdown').hover(function() { 
    $(this).addClass("open"); 
}, function() { 
    $(this).removeClass("open"); 
}); 

演示:Fiddle