菜单小组件添加版本:1.9
说明:可设置主题的菜单,带鼠标和键盘交互,用于导航。
只要元素具有严格的父/子关系,就可以从任何有效的标记创建菜单。最常用的元素是无序列表 (<ul>
)。此外,每个菜单项的内容必须用块级 DOM 元素进行包装。在下面的示例中,<div>
元素用作包装器
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
|
|
如果你使用 <ul>
/<li>
以外的结构,包括对菜单和菜单项使用相同的元素,请使用 menus
选项指定区分这两个元素的方法,例如,menus: "div.menuElement"
。
可以通过向该元素添加 ui-state-disabled
类来禁用任何菜单项。
图标
要向菜单添加图标,请将它们包含在标记中
1
2
3
4
5
|
|
菜单会自动为没有图标的项目添加必要的填充。
分隔符
可以通过包含仅包含空格和/或破折号的菜单项来创建分隔符元素
1
2
3
4
5
6
7
8
9
|
|
键盘交互
-
ENTER
/SPACE
:调用聚焦菜单项的操作,这可能会打开子菜单。 -
UP
:将焦点移动到上一个菜单项。 -
DOWN
:将焦点移动到下一个菜单项。 -
RIGHT
:打开子菜单(如果可用)。 -
LEFT
:关闭当前子菜单并将焦点移动到父菜单项。如果不在子菜单中,则不执行任何操作。 -
ESCAPE
:关闭当前子菜单并将焦点移动到父菜单项。如果不在子菜单中,则不执行任何操作。
键入一个字母会将焦点移动到标题以该字符开头的第一个项目。重复相同的字符将在匹配的项目之间循环。在一秒计时器内键入更多字符将匹配这些字符。
已禁用的项目可以接收键盘焦点,但不允许任何其他交互。
主题
菜单小部件使用 jQuery UI CSS 框架 来设置其外观和感觉。如果需要特定于菜单的样式,则可以使用以下 CSS 类名称进行覆盖或作为 classes
选项 的键
-
ui-menu
:菜单的外容器以及任何嵌套的子菜单。如果菜单包含图标,则此顶级元素还将具有ui-menu-icons
类。-
ui-menu-item
:单个菜单项的容器。其中包含项目文本本身的元素以及子菜单的元素。-
ui-menu-item-wrapper
:每个单独菜单项内的包装器元素,包含文本内容和指示子菜单的图标。-
ui-menu-icon
:通过icons
选项设置的子菜单图标。
-
-
-
ui-menu-divider
:菜单项之间的分隔符元素。
-
依赖项
其他说明
- 此小部件需要一些功能性 CSS,否则它将无法工作。如果您构建自定义主题,请使用小部件的特定 CSS 文件作为起点。
选项
classes
{}
指定要添加到小部件元素的其他类。在 主题部分 中指定的任何类都可以用作键来覆盖其值。要了解有关此选项的更多信息,请查看 有关 classes
选项的学习文章。
使用指定的 classes
选项初始化菜单,更改 ui-menu
类的主题
1
2
3
4
5
|
|
在初始化后获取或设置 classes
选项的属性,此处读取并更改 ui-menu
类的主题
1
2
3
4
5
|
|
disabled
false
true
,则禁用菜单。使用指定的 disabled
选项初始化菜单
1
2
3
|
|
在初始化后获取或设置 disabled
选项
1
2
3
4
5
|
|
icons
|
使用指定的 icons
选项初始化菜单
1
2
3
|
|
在初始化后获取或设置 icons
选项
1
2
3
4
5
|
|
items
"> *"
用作菜单项的元素的选择器。
items
选项不应在初始化后更改。使用指定的 items
选项初始化菜单
1
2
3
|
|
在初始化后获取 items
选项
1
2
|
|
position
{ my: "left top", at: "right top" }
of
选项默认为父菜单项,但你可以指定另一个元素来相对定位。你可以参考 jQuery UI Position 实用程序以了解有关各种选项的更多详细信息。使用指定的 position
选项初始化菜单
1
2
3
|
|
在初始化后获取或设置 position
选项
1
2
3
4
5
|
|
角色
"menu"
自定义用于菜单和菜单项的 ARIA 角色。默认值对项使用 "menuitem"
。将 role
选项设置为 "listbox"
将对项使用 "option"
。如果设置为 null
,则不会设置任何角色,如果菜单由维护焦点的另一个元素控制,则此设置很有用。
role
选项不应在初始化后更改。现有的(子)菜单和菜单项将不会更新。使用指定的 role
选项初始化菜单
1
2
3
|
|
在初始化后获取 role
选项
1
2
|
|
方法
instance()返回:Object
检索菜单的实例对象。如果元素没有关联的实例,则返回undefined
。
与其他小部件方法不同,在加载菜单插件后,可以在任何元素上安全地调用instance()
。
- 此方法不接受任何参数。
调用 instance 方法
1
|
|
option( optionName )返回:对象
获取当前与指定的 optionName
关联的值。
注意:对于以对象作为其值选项,你可以使用点表示法获取特定键的值。例如,"foo.bar"
将获取 foo
选项上 bar
属性的值。
-
optionName类型:字符串要获取的选项的名称。
调用方法
1
|
|
option()返回:PlainObject
- 此签名不接受任何参数。
调用方法
1
|
|
widget()返回:jQuery
jQuery
对象。
- 此方法不接受任何参数。
调用 widget 方法
1
|
|
扩展点
菜单小部件是使用 小部件工厂 构建的,并且可以进行扩展。在扩展小部件时,您可以覆盖或添加到现有方法的行为。以下方法作为扩展点提供,与上面列出的 插件方法 具有相同的 API 稳定性。有关小部件扩展的更多信息,请参阅 使用小部件工厂扩展小部件。
活动
blur( event, ui )类型:menublur
使用指定的 blur 回调初始化菜单
1
2
3
|
|
将事件侦听器绑定到 menublur 事件
1
|
|
create( event, ui )类型:menucreate
注意:ui
对象为空,但出于与其他事件的一致性而包含在内。
使用指定的 create 回调初始化菜单
1
2
3
|
|
将事件侦听器绑定到 menucreate 事件
1
|
|
focus( event, ui )类型:menufocus
使用指定的 focus 回调初始化菜单
1
2
3
|
|
将事件侦听器绑定到 menufocus 事件
1
|
|
示例
一个简单的 jQuery UI 菜单
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
48
49
50
51
|
|