1. 程式人生 > >解決bootstrap下拉選單無法隱藏的問題

解決bootstrap下拉選單無法隱藏的問題

下拉選單的兩種實現

想必大家都知道,bootstrap為我們提供了一個下拉選單的元件,官方也為我們提供兩種使用方法
1.標籤指定data-toggle

<div class="dropdown">
    <button type="button" class="btn dropdown-toggle" id="dropdownMenu1" data-toggle="dropdown">主題
        <span class="caret"></span>
    </button>
    <ul class="dropdown-menu"
role="menu" aria-labelledby="dropdownMenu1">
<li role="presentation"> <a role="menuitem" tabindex="-1" href="#">Java</a> </li> <li role="presentation"> <a role="menuitem" tabindex="-1" href="#">資料探勘</a> </li
>
<li role="presentation"> <a role="menuitem" tabindex="-1" href="#">資料通訊/網路</a> </li> <li role="presentation" class="divider"></li> <li role="presentation"> <a role="menuitem" tabindex="-1" href="#">
分離的連結</a> </li> </ul> </div>

2.js呼叫dropdown(‘toggle’)方法

<div class="dropdown">
    <a href="#" class="dropdown-toggle" id="dropdownMenu1" >
        主題
        <span class="caret"></span>
    </a>
    <ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu1">
        <li role="presentation">
            <a role="menuitem" tabindex="-1" href="#">Java</a>
        </li>
        <li role="presentation">
            <a role="menuitem" tabindex="-1" href="#">資料探勘</a>
        </li>
        <li role="presentation">
            <a role="menuitem" tabindex="-1" href="#">資料通訊/網路</a>
        </li>
    </ul>
<button id="test">test</button>
</div>
</body>

<script>
    $(function() {
        $("#test").click(function() {
            $(".dropdown-toggle").dropdown('toggle');
        })
    })
</script>

第二種方法有個很嚴重的問題

就是,下拉選單開啟後,官方並沒有提供將它隱藏的方法,網上的方法死活說再次呼叫dropdown(‘toggle’)。。。反正我不行。
那麼我想用點選之外來開啟下拉選單呢?(必須得使用JS來控制)
我想到一個方法,使用jQuery提供的一個效果slideUp(),slideDown()

<body>
<div class="dropdown">
    <a href="#" class="dropdown-toggle" id="dropdownMenu1" >
        主題
        <span class="caret"></span>
    </a>
    <ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu1">
        <li role="presentation">
            <a role="menuitem" tabindex="-1" href="#">Java</a>
        </li>
        <li role="presentation">
            <a role="menuitem" tabindex="-1" href="#">資料探勘</a>
        </li>
        <li role="presentation">
            <a role="menuitem" tabindex="-1" href="#">資料通訊/網路</a>
        </li>
        <li role="presentation" class="divider"></li>
        <li role="presentation">
            <a role="menuitem" tabindex="-1" href="#">分離的連結</a>
        </li>
    </ul>
<button id="test">test</button>
<button id="test1">test1</button>
</div>
</body>
<script>
    $(function() {
        $("#test").click(function() {
            $(".dropdown-menu").slideUp();
        })
        $("#test1").click(function() {
            $(".dropdown-menu").slideDown();
        })
    })
</script>

好了現在能實現開和關了,但是速度有點慢?沒事slide可以通過引數調節速度甚至還有回撥函式來替代$(selector).on("hidden.bs.dropdown', function () {})(對下拉選單收回時間的監聽),滿分!
$(selector).slideUp(speed,callback)

  • speed 可選。規定元素從可見到隱藏的速度(或者相反)。預設為 “normal”。 可能的值:
    • 毫秒 (比如 1500)
    • “slow”
    • “normal”
    • “fast”
      在設定速度的情況下,元素從可見到隱藏的過程中,會逐漸地改變其高度(這樣會創造滑動效果)。
  • callback
    可選。slideUp 函式執行完之後,要執行的函式。 除非設定了 speed 引數,否則不能設定該引數。