5.3.2 JavaScript用法

Bootstrap的Dropdown插件也支持JavaScript手动触发的方式,这样的好处是,可以按照自己的方式省略一些元素或者样式。示例如下:

  1. <ul class="nav nav-pills">
  2. <li>
  3. <a href="#" id="btnLink" class="dropdown-toggle">Dropdown <b class=
  4. "caret"></b></a>
  5. <ul class="dropdown-menu">
  6. <li><a href="#" tabindex="-1">Action</a></li>
  7. <li class="divider"></li>
  8. <li><a href="#" tabindex="-1">Separated link</a></li>
  9. </ul>
  10. </li>
  11. </ul>

按照上述布局,我们只需要对链接元素设置dropdown绑定即可,可以使用id,也可以使用class样式,本例中是对dropdown-toggle样式进行绑定。源码如下:

  1. <script type="text/javascript">
  2. $(document).ready(
  3. function () {
  4. $('.dropdown-toggle').dropdown(); // 使用$('#btnLink').dropdown();也可以
  5. });
  6. </script>

和Modal一样,dropdown也接收字符串作为参数进行传递,例如dropdown('toggle')。但这非常不好用,因为一旦执行了该语句,插件就在系统再次注册了单击事件进行toggle,这样如果再执行dropdown('toggle')语句,每次单击都要两次togle,就会一直是一个不变的状态(下一章节的源码会提到这个问题)。所以,一般情况下,使用示例中不带参数的dropdown方法进行注册,即便非要使用带toggle参数的,建议使用jQuery的one方法(即第一次单击的时候注册,以后就不管了,因为系统已经自动注册了)。

  1. $("#btnDropdown").one("click", function () {
  2. $(this).dropdown('toggle');
  3. });

同模态弹窗一样,下拉菜单也支持4种类型的事件订阅,分别对应下拉菜单的弹出前、弹出后、关闭前、关闭后,如表5-5所示。

5.3.2 JavaScript用法 - 图1

调用方式也很简单,和普通的jQuery代码并无二样。

  1. $('#myDropdown').on('show.bs.dropdown', function () {
  2. // do something…
  3. })