Bootstrap dorpdown hover

Bootstrap下拉菜單默認須要經過點擊,才能夠打開,在管理系統的開發過程當中,使用懸停代替點擊能減小一步操做,更人性化。javascript

1、純css樣式控制。css

.dropdown:hover .dropdown-menu {
    display: block;
    margin-top: 0;     // remove the gap so it doesn't close
}

  優勢:實現簡單,無需藉助js。html

  缺點:觸發按鈕跟下拉菜單之間不能有間隙,不然一失焦下拉菜單就會消失。java

2、插件實現。jquery

  bootstrap-hover-dropdown 插件能夠實現此功能。  git

<!-- script order matters! -->
<script src="/path/to/jquery.min.js"></script>
<script src="/path/to/bootstrap.min.js"></script>
<script src="/path/to/bootstrap-hover-dropdown.min.js"></script>


<li class="dropdown">
    <a href="#" class="dropdown-toggle" data-toggle="dropdown" data-hover="dropdown">
        Account <b class="caret"></b>
    </a>
    <ul class="dropdown-menu">
        <li><a href="#">菜單一</a></li>
    </ul>
</li>

  優勢:使用簡單。github

  缺點:該插件存在不肯定性BUG,且自從2015年末至今一直沒有維護更新。
     (親歷:多行表格中,每行都有dropdown按鈕,hover時有時顯示不正常)。bootstrap

3、css+hover+timeout實現。this

  基於方案一,經過樣式控制是否顯示,經過hover事件控制是否添加樣式,經過timeout解決異常失焦問題。spa

.dropdown.hover .dropdown-menu {
  display: block;
  margin-top: 0;
}

$('[data-toggle="dropdown"]').hover(function(){
    var $parents = $(this).parents('.dropdown');
    window.dropDownTimer&&clearTimeout(window.dropDownTimer);
    $('.dropdown').removeClass('hover');
    $parents.addClass('hover');
},function(){
    var $parents = $(this).parents('.dropdown');
    window.dropDownTimer = setTimeout(function(){
        $parents.removeClass('hover');
    },500)
})
相關文章
相關標籤/搜索