8.3.2 使用JS触发下拉菜单
如果希望通过JS
展开下拉菜单,可调用下拉菜单的dropdown()
方法,该方法有两个用法。
- 不传入参数:该方法默认打开下拉菜单。
- 传入
'toggle'
字符串参数:该字符串参数用于控制下拉菜单在打开或收起状态之间切换。
如下代码示范了如何使用JS触发下拉菜单。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| <!DOCTYPE html> <html>
<head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1"> <title> 触发下拉菜单 </title> <link rel="stylesheet" href="../bootstrap/css/bootstrap.min.css"> <link rel="stylesheet" href="../bootstrap/css/bootstrap-theme.min.css"> <script type="text/javascript" src="../jquery-3.1.1.js"></script> <script type="text/javascript" src="../bootstrap/js/bootstrap.min.js"></script> </head>
<body> <div class="container"> <button type="button" class="btn btn-primary">给下拉菜单注册展开方法</button> <div class="dropdown"> <a class="btn btn-default dropdown-toggle" type="button" aria-haspopup="true" aria-expanded="true" id="dropMenu"> 下拉菜单的触发按钮 <span class="caret"></span> </a> <ul class="dropdown-menu"> <li><a href="#">新建</a></li> <li><a href="#">打开</a></li> <li><a href="#">保存</a></li> <li role="separator" class="divider"></li> <li><a href="#">退出</a></li> </ul> </div> </div> <script type="text/javascript"> $(".btn").filter(".btn-primary").click(function () { $("#dropMenu").dropdown(); }); </script> </body>
</html>
|
上面程序中第二个按钮上没有data-toggle="dropdown"
属性,因此用户直接单击第二个按钮时不会展开下拉菜单。
这个时候需要给下拉菜单的触发按钮
注册展开方法,这通过在触发按钮
上调用dropdown()
方法实现。
运行程序,先点击第1个按钮,把dropdown()
方法绑定到下拉菜单的触发按钮
上,然后才可以通过点击这个触发按钮
展开下拉菜单.
JS展开下拉菜单步骤
上面的代码中给触发按钮注册dropdown()
方法后,下拉菜单的触发按钮只能展开下来菜单,之后再次点击触发按钮,无法关闭下来菜单。实际上这样做并没有什么意义,仅仅只是方便我们更好地了解通过JS触发下拉菜单的原理:
要先在下拉菜单的触发按钮上调用dropdown()
方法进行注册,然后该触发按钮才可以展开菜单.
读者小蓝注
通过JS好像只能展开下拉菜单,展开后好像还无法收起下拉菜单。
如果要支持收起菜单,一定要在触发按钮
上添加data-toggle="dropdown"
属性,但是问题就是,如果添加了该属性,则直接点击触发按钮就可以展开或者收起下拉菜单了.也就没有JS什么事情了.所以还是不要使用JS来触发下来菜单的好,直接使用data-toggle="dropdown"
属性即可.
注意,这个地方还存在疑惑,有空再弄清楚吧。