Menu Widgetversion added: 1.9
Description: Themeable menu with mouse and keyboard interactions for navigation.
Options
iconsType: Object
{ submenu: "ui-icon-carat-1-e" }
- submenu (string, default: "ui-icon-carat-1-e")
positionType: Object
{ my: "top left", at: "top right" }
of
option defaults to the parent menu item, but you can specify another element to position against. You can refer to the jQuery UI Position utility for more details about the various options.roleType: String
"menu"
"menuitem"
for items. Setting the role
option to "listbox"
will use "option"
for items. If set to null
, no roles will be set, which is useful if the menu is being controlled by another element that is maintaining focus.Methods
collapse( [event ] )
-
eventType: EventWhat triggered the menu to collapse.
destroy()
disable()
enable()
expand( [event ] )
-
eventType: EventWhat triggered the menu to expand.
isFirstItem()
isLastItem()
next( [event ] )
-
eventType: EventWhat triggered the focus to move.
nextPage( [event ] )
-
eventType: EventWhat triggered the focus to move.
option( optionName ) Returns: Object
optionName
.-
optionNameType: StringThe name of the option to get.
option() Returns: PlainObject
option( optionName, value )
optionName
.option( options )
-
optionsType: ObjectA map of option-value pairs to set.
previous( [event ] )
-
eventType: EventWhat triggered the focus to move.
previousPage( [event ] )
-
eventType: EventWhat triggered the focus to move.
refresh()
refresh()
method.
widget() Returns: jQuery
jQuery
object containing the menu.
Events
blur( event, ui )
focus( event, ui )
A menu can be created from any valid markup as long as the elements have a strict parent/child relationship and each menu item has an anchor. The most commonly used element is the unordered list (<ul>
):
<ul id="menu"> <li><a href="#">Item 1</a></li> <li><a href="#">Item 2</a></li> <li><a href="#">Item 3</a> <ul> <li><a href="#">Item 3-1</a></li> <li><a href="#">Item 3-2</a></li> <li><a href="#">Item 3-3</a></li> <li><a href="#">Item 3-4</a></li> <li><a href="#">Item 3-5</a></li> </ul> </li> <li><a href="#">Item 4</a></li> <li><a href="#">Item 5</a></li> </ul>
If you use a structure other than <ul>
/<li>
, including using the same element for the menu and the menu items, use the menus
option to specify a way to differentiate the two elements, e.g., menus: "div.menuElement"
.
Any menu item can be disabled by adding the ui-state-disabled
class to that element.
Keyboard interaction
- ENTER/SPACE: Invoke the focused menu item's action, which may be opening a submenu.
- UP: Move focus to the previous menu item.
- DOWN: Move focus to the next menu item.
- RIGHT: Open the submenu, if available.
- LEFT: Close the current submenu and move focus to the parent menu item. If not in a submenu, do nothing.
- ESCAPE: Close the current submenu and move focus to the parent menu item. If not in a submenu, do nothing.
Typing a letter moves focus to the first item whose title starts with that character. Repeating the same character cycles through matching items. Typing more characters within the one second timer matches those characters.
Disabled items can receive keyboard focus, but do not allow any other interaction.
Additional Notes:
- This widget requires some functional CSS, otherwise it won't work. If you build a custom theme, use the widget's specific CSS file as a starting point.
Example:
A simple jQuery UI Menu
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 | <!doctype html> < html lang = "en" > < head > < meta charset = "utf-8" > < title >menu demo</ title > < style > .ui-menu { width: 200px; } </ style > </ head > < body > < ul id = "menu" > < li >< a href = "#" >Item 1</ a ></ li > < li >< a href = "#" >Item 2</ a ></ li > < li >< a href = "#" >Item 3</ a > < ul > < li >< a href = "#" >Item 3-1</ a ></ li > < li >< a href = "#" >Item 3-2</ a ></ li > < li >< a href = "#" >Item 3-3</ a ></ li > < li >< a href = "#" >Item 3-4</ a ></ li > < li >< a href = "#" >Item 3-5</ a ></ li > </ ul > </ li > < li >< a href = "#" >Item 4</ a ></ li > < li >< a href = "#" >Item 5</ a ></ li > </ ul > < script > $( "#menu" ).menu(); </ script > </ body > </ html > |