2014-07-12 11:20:15 +02:00
---
layout: page
title: Dropdowns
---
2014-07-13 09:54:26 +02:00
Add dropdown menus to nearly anything with this simple plugin, including the navbar, tabs, and pills.
### Within navbars
< div class = "bs-example" >
2014-12-01 05:17:45 +01:00
< nav id = "navbar-example" class = "navbar navbar-default navbar-static" >
2014-07-13 09:54:26 +02:00
< div class = "container-fluid" >
< div class = "navbar-header" >
< button class = "navbar-toggle collapsed" type = "button" data-toggle = "collapse" data-target = ".bs-example-js-navbar-collapse" >
< span class = "sr-only" > Toggle navigation< / span >
< span class = "icon-bar" > < / span >
< span class = "icon-bar" > < / span >
< span class = "icon-bar" > < / span >
2014-07-13 00:16:43 +02:00
< / button >
2014-07-13 09:54:26 +02:00
< a class = "navbar-brand" href = "#" > Project Name< / a >
< / div >
< div class = "collapse navbar-collapse bs-example-js-navbar-collapse" >
< ul class = "nav navbar-nav" >
< li class = "dropdown" >
< button id = "drop1" type = "button" class = "dropdown-toggle" data-toggle = "dropdown" >
Dropdown
< / button >
< ul class = "dropdown-menu" role = "menu" aria-labelledby = "drop1" >
2014-10-27 06:31:59 +01:00
< li role = "presentation" > < a role = "menuitem" tabindex = "-1" href = "https://twitter.com/fat" > Action< / a > < / li >
< li role = "presentation" > < a role = "menuitem" tabindex = "-1" href = "https://twitter.com/fat" > Another action< / a > < / li >
< li role = "presentation" > < a role = "menuitem" tabindex = "-1" href = "https://twitter.com/fat" > Something else here< / a > < / li >
2014-07-13 09:54:26 +02:00
< li role = "presentation" class = "divider" > < / li >
2014-10-27 06:31:59 +01:00
< li role = "presentation" > < a role = "menuitem" tabindex = "-1" href = "https://twitter.com/fat" > Separated link< / a > < / li >
2014-07-13 09:54:26 +02:00
< / ul >
< / li >
< li class = "dropdown" >
< button id = "drop2" type = "button" class = "dropdown-toggle" data-toggle = "dropdown" >
Dropdown 2
< / button >
< ul class = "dropdown-menu" role = "menu" aria-labelledby = "drop2" >
2014-10-27 06:31:59 +01:00
< li role = "presentation" > < a role = "menuitem" tabindex = "-1" href = "https://twitter.com/fat" > Action< / a > < / li >
< li role = "presentation" > < a role = "menuitem" tabindex = "-1" href = "https://twitter.com/fat" > Another action< / a > < / li >
< li role = "presentation" > < a role = "menuitem" tabindex = "-1" href = "https://twitter.com/fat" > Something else here< / a > < / li >
2014-07-13 09:54:26 +02:00
< li role = "presentation" class = "divider" > < / li >
2014-10-27 06:31:59 +01:00
< li role = "presentation" > < a role = "menuitem" tabindex = "-1" href = "https://twitter.com/fat" > Separated link< / a > < / li >
2014-07-13 09:54:26 +02:00
< / ul >
< / li >
2014-03-17 03:03:53 +01:00
< / ul >
2014-07-13 09:54:26 +02:00
< ul class = "nav navbar-nav navbar-right" >
< li id = "fat-menu" class = "dropdown" >
< button id = "drop3" type = "button" class = "dropdown-toggle" data-toggle = "dropdown" >
Dropdown 3
< / button >
< ul class = "dropdown-menu" role = "menu" aria-labelledby = "drop3" >
2014-10-27 06:31:59 +01:00
< li role = "presentation" > < a role = "menuitem" tabindex = "-1" href = "https://twitter.com/fat" > Action< / a > < / li >
< li role = "presentation" > < a role = "menuitem" tabindex = "-1" href = "https://twitter.com/fat" > Another action< / a > < / li >
< li role = "presentation" > < a role = "menuitem" tabindex = "-1" href = "https://twitter.com/fat" > Something else here< / a > < / li >
2014-07-13 09:54:26 +02:00
< li role = "presentation" class = "divider" > < / li >
2014-10-27 06:31:59 +01:00
< li role = "presentation" > < a role = "menuitem" tabindex = "-1" href = "https://twitter.com/fat" > Separated link< / a > < / li >
2014-07-13 09:54:26 +02:00
< / ul >
< / li >
2014-03-17 03:03:53 +01:00
< / ul >
2014-07-13 09:54:26 +02:00
< / div > <!-- /.nav - collapse -->
< / div > <!-- /.container - fluid -->
< / nav > <!-- /navbar - example -->
< / div > <!-- /example -->
### Within pills
2014-03-17 03:03:53 +01:00
2014-07-13 09:54:26 +02:00
< div class = "bs-example" >
< ul class = "nav nav-pills" role = "tablist" >
< li role = "presentation" class = "active" > < a href = "#" > Regular link< / a > < / li >
< li role = "presentation" class = "dropdown" >
< button id = "drop4" type = "button" data-toggle = "dropdown" >
Dropdown
< / button >
< ul id = "menu1" class = "dropdown-menu" role = "menu" aria-labelledby = "drop4" >
2014-10-27 06:31:59 +01:00
< li role = "presentation" > < a role = "menuitem" tabindex = "-1" href = "https://twitter.com/fat" > Action< / a > < / li >
< li role = "presentation" > < a role = "menuitem" tabindex = "-1" href = "https://twitter.com/fat" > Another action< / a > < / li >
< li role = "presentation" > < a role = "menuitem" tabindex = "-1" href = "https://twitter.com/fat" > Something else here< / a > < / li >
2014-07-13 09:54:26 +02:00
< li role = "presentation" class = "divider" > < / li >
2014-10-27 06:31:59 +01:00
< li role = "presentation" > < a role = "menuitem" tabindex = "-1" href = "https://twitter.com/fat" > Separated link< / a > < / li >
2014-07-13 09:54:26 +02:00
< / ul >
< / li >
< li role = "presentation" class = "dropdown" >
< button id = "drop5" type = "button" data-toggle = "dropdown" >
Dropdown 2
< / button >
< ul id = "menu2" class = "dropdown-menu" role = "menu" aria-labelledby = "drop5" >
2014-10-27 06:31:59 +01:00
< li role = "presentation" > < a role = "menuitem" tabindex = "-1" href = "https://twitter.com/fat" > Action< / a > < / li >
< li role = "presentation" > < a role = "menuitem" tabindex = "-1" href = "https://twitter.com/fat" > Another action< / a > < / li >
< li role = "presentation" > < a role = "menuitem" tabindex = "-1" href = "https://twitter.com/fat" > Something else here< / a > < / li >
2014-07-13 09:54:26 +02:00
< li role = "presentation" class = "divider" > < / li >
2014-10-27 06:31:59 +01:00
< li role = "presentation" > < a role = "menuitem" tabindex = "-1" href = "https://twitter.com/fat" > Separated link< / a > < / li >
2014-07-13 09:54:26 +02:00
< / ul >
< / li >
< li role = "presentation" class = "dropdown" >
< button id = "drop6" type = "button" data-toggle = "dropdown" >
Dropdown 3
< / button >
< ul id = "menu3" class = "dropdown-menu" role = "menu" aria-labelledby = "drop6" >
2014-10-27 06:31:59 +01:00
< li role = "presentation" > < a role = "menuitem" tabindex = "-1" href = "https://twitter.com/fat" > Action< / a > < / li >
< li role = "presentation" > < a role = "menuitem" tabindex = "-1" href = "https://twitter.com/fat" > Another action< / a > < / li >
< li role = "presentation" > < a role = "menuitem" tabindex = "-1" href = "https://twitter.com/fat" > Something else here< / a > < / li >
2014-07-13 09:54:26 +02:00
< li role = "presentation" class = "divider" > < / li >
2014-10-27 06:31:59 +01:00
< li role = "presentation" > < a role = "menuitem" tabindex = "-1" href = "https://twitter.com/fat" > Separated link< / a > < / li >
2014-07-13 09:54:26 +02:00
< / ul >
< / li >
< / ul >
< / div >
2014-03-17 03:03:53 +01:00
2014-07-13 09:54:26 +02:00
## Usage
Via data attributes or JavaScript, the dropdown plugin toggles hidden content (dropdown menus) by toggling the `.open` class on the parent list item.
On mobile devices, opening a dropdown adds a `.dropdown-backdrop` as a tap area for closing dropdown menus when tapping outside the menu, a requirement for proper iOS support. **This means that switching from an open dropdown menu to a different dropdown menu requires an extra tap on mobile.**
Note: The `data-toggle="dropdown"` attribute is relied on for closing dropdown menus at an application level, so it's a good idea to always use it.
### Via data attributes
Add `data-toggle="dropdown"` to a link or button to toggle a dropdown.
2014-03-17 03:03:53 +01:00
{% highlight html %}
< div class = "dropdown" >
2014-07-13 00:16:43 +02:00
< button id = "dLabel" type = "button" data-toggle = "dropdown" >
Dropdown trigger
2014-11-10 07:02:53 +01:00
< span class = "caret" > < / span >
2014-07-13 00:16:43 +02:00
< / button >
2014-03-17 03:03:53 +01:00
< ul class = "dropdown-menu" role = "menu" aria-labelledby = "dLabel" >
...
< / ul >
< / div >
{% endhighlight %}
2014-07-13 09:54:26 +02:00
To keep URLs intact with link buttons, use the `data-target` attribute instead of `href="#"` .
2014-03-17 03:03:53 +01:00
{% highlight html %}
< div class = "dropdown" >
2014-08-03 03:30:59 +02:00
< a id = "dLabel" data-target = "#" href = "http://example.com" data-toggle = "dropdown" >
2014-07-13 09:08:25 +02:00
Dropdown trigger
2014-07-13 00:16:43 +02:00
< span class = "caret" > < / span >
2014-07-13 09:08:25 +02:00
< / a >
2014-03-17 03:03:53 +01:00
< ul class = "dropdown-menu" role = "menu" aria-labelledby = "dLabel" >
...
< / ul >
< / div >
{% endhighlight %}
2014-07-13 09:54:26 +02:00
### Via JavaScript
Call the dropdowns via JavaScript:
2014-03-17 03:03:53 +01:00
{% highlight js %}
$('.dropdown-toggle').dropdown()
{% endhighlight %}
2014-07-13 09:54:26 +02:00
< div class = "bs-callout bs-callout-info" >
< h4 > < code > data-toggle="dropdown"< / code > still required< / h4 >
< p > Regardless of whether you call your dropdown via JavaScript or instead use the data-api, < code > data-toggle="dropdown"< / code > is always required to be present on the dropdown's trigger element.< / p >
< / div >
### Options
*None.*
### Methods
#### $().dropdown('toggle')
Toggles the dropdown menu of a given navbar or tabbed navigation.
### Events
2014-12-01 05:17:45 +01:00
All dropdown events are fired at the `.dropdown-menu` 's parent element and have a `relatedTarget` property, whose value is the toggling anchor element.
2014-07-13 09:54:26 +02:00
< div class = "table-responsive" >
< table class = "table table-bordered table-striped" >
< thead >
< tr >
< th style = "width: 150px;" > Event Type< / th >
< th > Description< / th >
< / tr >
< / thead >
< tbody >
< tr >
< td > show.bs.dropdown< / td >
2014-12-01 05:17:45 +01:00
< td > This event fires immediately when the show instance method is called.< / td >
2014-07-13 09:54:26 +02:00
< / tr >
< tr >
< td > shown.bs.dropdown< / td >
2014-12-01 05:17:45 +01:00
< td > This event is fired when the dropdown has been made visible to the user (will wait for CSS transitions, to complete).< / td >
2014-07-13 09:54:26 +02:00
< / tr >
< tr >
< td > hide.bs.dropdown< / td >
2014-12-01 05:17:45 +01:00
< td > This event is fired immediately when the hide instance method has been called.< / td >
2014-07-13 09:54:26 +02:00
< / tr >
< tr >
< td > hidden.bs.dropdown< / td >
2014-12-01 05:17:45 +01:00
< td > This event is fired when the dropdown has finished being hidden from the user (will wait for CSS transitions, to complete).< / td >
2014-07-13 09:54:26 +02:00
< / tr >
< / tbody >
< / table >
< / div >
2014-03-17 03:03:53 +01:00
{% highlight js %}
$('#myDropdown').on('show.bs.dropdown', function () {
// do something…
})
{% endhighlight %}