Menu Widgetversion added: 1.9
Description: Themeable menu with mouse and keyboard interactions for navigation.
Options
disabledType: Boolean
false
true
.Initialize the menu with the disabled option specified:
$( ".selector" ).menu({ disabled: true }); |
Get or set the disabled option, after initialization:
// getter var disabled = $( ".selector" ).menu( "option" , "disabled" ); // setter $( ".selector" ).menu( "option" , "disabled" , true ); |
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()
- This method does not accept any arguments.
disable()
- This method does not accept any arguments.
enable()
- This method does not accept any arguments.
expand( [event ] )
-
eventType: EventWhat triggered the menu to expand.
isFirstItem()
- This method does not accept any arguments.
isLastItem()
- This method does not accept any arguments.
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
- This method does not accept any arguments.
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.
- This method does not accept any arguments.
widget() Returns: jQuery
jQuery
object containing the menu.
- This method does not accept any arguments.
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.
To add icons to the menu, include them in the markup:
<ul id="menu"> <li><a href="#"><span class="ui-icon ui-icon-disk"></span>Save</a></li> </ul>
Menu automatically adds the necessary padding to items without icons.
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 > |