Bootstrap JS 下拉菜单


JS 下拉菜单(dropdown.js)

下拉菜单是一种可切换菜单,允许用户从预定义列表中选择一个值。

有关下拉菜单的教程,请阅读我们的Bootstrap 下拉菜单教程


下拉插件类

Class Description Example
.dropdown Indicates a dropdown menu 尝试一下
.dropdown-menu Builds the dropdown menu 尝试一下
.dropdown-menu-right Right-aligns a dropdown menu 尝试一下
.dropdown-header Adds a header inside the dropdown menu 尝试一下
.dropup Indicates a dropup menu 尝试一下
.disabled Disables an item in the dropdown menu 尝试一下
.divider Separates items inside the dropdown menu with a horizontal line 尝试一下

通过 data-* 属性

添加data-toggle="dropdown"链接或按钮来切换下拉菜单。

示例

<a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown Example</a>
亲自试一试 »

通过JavaScript

手动启用:

示例

$('.dropdown-toggle').dropdown();
亲自试一试 »

笔记:无论您是否调用 dropdown() 方法,data-toggle="dropdown" 属性都是必需的。



下拉选项

None

下拉方法

下表列出了所有可用的下拉方法。

Method Description 尝试一下
.dropdown("toggle") Toggles the dropdown 尝试一下

下拉事件

下表列出了所有可用的下拉事件。

Event Description 尝试一下
show.bs.dropdown Occurs when the dropdown is about to be shown. 尝试一下
shown.bs.dropdown Occurs when the dropdown is fully shown (after CSS transitions have completed) 尝试一下
hide.bs.dropdown Occurs when the dropdown is about to be hidden 尝试一下
hidden.bs.dropdown Occurs when the dropdown is fully hidden (after CSS transitions have completed) 尝试一下

提示:使用 jQuery 的事件相关目标获取触发下拉列表的元素:

示例

$(".dropdown").on("show.bs.dropdown", function(event){
  var x = $(event.relatedTarget).text(); // Get the text of the element
  alert(x);
});
亲自试一试 »

更多示例

将插入符号图标更改为上下颠倒

以下示例在单击下拉菜单时将插入符号图标从向下更改为向上:

示例

/* CSS: */
<style>
.caret.caret-up {
  border-top-width: 0;
  border-bottom: 4px solid #fff;
}
</style>

/* JS: */
<script>
$(document).ready(function(){
  $(".dropdown").on("hide.bs.dropdown", function(){
    $(".btn").html('Dropdown <span class="caret"></span>');
  });
  $(".dropdown").on("show.bs.dropdown", function(){
    $(".btn").html('Dropdown <span class="caret caret-up"></span>');
  });
});
</script>
亲自试一试 »

带下拉菜单的导航栏

以下示例为导航栏中的按钮添加下拉菜单:

示例

<nav class="navbar navbar-inverse">
  <div class="container-fluid">
    <div class="navbar-header">
      <a class="navbar-brand" href="#">WebSiteName</a>
    </div>
    <div>
      <ul class="nav navbar-nav">
        <li class="active"><a href="#">Home</a></li>
        <li class="dropdown">
          <a class="dropdown-toggle" data-toggle="dropdown" href="#">Page 1
          <span class="caret"></span></a>
          <ul class="dropdown-menu">
            <li><a href="#">Page 1-1</a></li>
            <li><a href="#">Page 1-2</a></li>
            <li><a href="#">Page 1-3</a></li>
          </ul>
        </li>
        <li><a href="#">Page 2</a></li>
        <li><a href="#">Page 3</a></li>
      </ul>
    </div>
  </div>
</nav>
亲自试一试 »

以下示例在导航栏中添加带有登录表单的下拉菜单:

示例

<ul class="nav navbar-nav navbar-right">
  <li class="dropdown">
    <a class="dropdown-toggle" data-toggle="dropdown" href="#">Login <span class="glyphicon glyphicon-log-in"></span></a>
    <div class="dropdown-menu">
      <form id="formlogin" class="form container-fluid">
        <div class="form-group">
          <label for="usr">Name:</label>
          <input type="text" class="form-control" id="usr">
        </div>
        <div class="form-group">
          <label for="pwd">Password:</label>
          <input type="password" class="form-control" id="pwd">
        </div>
          <button type="button" id="btnLogin" class="btn btn-block">Login</button>
      </form>
      <div class="container-fluid">
        <a class="small" href="#">Forgot password?</a>
      </div>
    </div>
  </li>
</ul>
亲自试一试 »

多级下拉菜单

在此示例中,我们使用 jQuery 在单击时打开多级下拉菜单:

示例

<script>
$(document).ready(function(){
  $('.dropdown-submenu a.test').on("click", function(e){
    $(this).next('ul').toggle();
    e.stopPropagation();
    e.preventDefault();
  });
});
</script>
亲自试一试 »

在这个例子中,我们创建了一个自定义的.dropdown-submenu多级下拉菜单类:

示例

 /* CSS: */
<style>
.dropdown-submenu {
  position: relative;
}

.dropdown-submenu .dropdown-menu {
  top: 0;
  left: 100%;
  margin-top: -1px;
}
</style>

/* JS: */
<script>
$(document).ready(function(){
  $('.dropdown-submenu a.test').on("click", function(e){
    $(this).next('ul').toggle();
    e.stopPropagation();
    e.preventDefault();
  });
});
</script>
亲自试一试 »