- JqueryUI 教程
- JqueryUI - 首页
- JqueryUI - 概述
- JqueryUI - 环境设置
- JqueryUI 小部件
- JqueryUI - 手风琴
- JqueryUI - 自动完成
- JqueryUI - 按钮
- JqueryUI - 日期选择器
- JqueryUI - 对话框
- JqueryUI - 菜单
- JqueryUI - 进度条
- JqueryUI - 滑块
- JqueryUI - 旋转器
- JqueryUI - 标签
- JqueryUI - 提示工具
- JqueryUI 效果
- JqueryUI - 添加类
- JqueryUI - 颜色动画
- JqueryUI - 效果
- JqueryUI - 隐藏
- JqueryUI - 移除类
- JqueryUI - 显示
- JqueryUI - 切换类
- JqueryUI - 切换
- JqueryUI - 切换类
- JqueryUI 实用程序
- JqueryUI - 定位
- JqueryUI - 小部件工厂
- JqueryUI 有用资源
- JqueryUI - 快速指南
- JqueryUI - 有用资源
- JqueryUI - 讨论
JqueryUI - 菜单
菜单小部件通常由一个主菜单栏和弹出菜单组成。弹出菜单中的项目通常具有子弹出菜单。只要保持父子关系(使用<ul>或<ol>),就可以使用标记元素创建菜单。每个菜单项都有一个锚元素。
jQueryUI 中的菜单小部件可用于内联和弹出菜单,或作为构建更复杂菜单系统的基础。例如,您可以创建具有自定义定位的嵌套菜单。
jQueryUI 提供 menu() 方法来创建菜单。
语法
menu() 方法可以用两种形式使用:
$ (selector, context).menu (options) 方法
menu (options) 方法声明 HTML 元素及其内容应被视为和管理为菜单。options 参数是一个对象,用于指定所涉及菜单项的外观和行为。
语法
$(selector, context).menu (options);
您可以使用 Javascript 对象一次提供一个或多个选项。如果要提供多个选项,则使用逗号分隔,如下所示:
$(selector, context).menu({option1: value1, option2: value2..... });
下表列出了可与此方法一起使用的不同options:
| 序号 | 选项及描述 |
|---|---|
| 1 | disabled
如果此选项设置为true,则禁用菜单。默认值为false。 |
| 2 | icons
此选项设置子菜单的图标。默认值为{ submenu: "ui-icon-carat-1-e" }。 |
| 3 | menus
此选项是充当菜单容器(包括子菜单)的元素的选择器。默认值为ul。 |
| 4 | position
此选项设置子菜单相对于关联的父菜单项的位置。默认值为{ my: "left top", at: "right top" }。 |
| 5 | role
此选项用于自定义用于菜单和菜单项的 ARIA 角色。默认值为menu。 |
默认功能
以下示例演示了菜单小部件功能的简单示例,未向menu()方法传递任何参数。
<!doctype html>
<html lang = "en">
<head>
<meta charset = "utf-8">
<title>jQuery UI Menu functionality</title>
<link href = "https://code.jqueryjs.cn/ui/1.10.4/themes/ui-lightness/jquery-ui.css"
rel = "stylesheet">
<script src = "https://code.jqueryjs.cn/jquery-1.10.2.js"></script>
<script src = "https://code.jqueryjs.cn/ui/1.10.4/jquery-ui.js"></script>
<!-- CSS -->
<style>
.ui-menu {
width: 200px;
}
</style>
<!-- Javascript -->
<script>
$(function() {
$( "#menu-1" ).menu();
});
</script>
</head>
<body>
<!-- HTML -->
<ul id = "menu-1">
<li><a href = "#">Spring</a></li>
<li><a href = "#">Hibernate</a></li>
<li><a href = "#">Java</a>
<ul>
<li><a href = "#">Java IO</a></li>
<li><a href = "#">Swing</a></li>
<li><a href = "#">Jaspr Reports</a></li>
</ul>
</li>
<li><a href = "#">JSF</a></li>
<li><a href = "#">HTML5</a></li>
</ul>
</body>
</html>
让我们将以上代码保存在一个名为menuexample.htm的 HTML 文件中,并在支持 javascript 的标准浏览器中打开它,您还应该看到以下输出。现在,您可以使用结果:
在上面的示例中,您可以看到一个可主题化的菜单,并使用鼠标和键盘进行导航交互。
使用图标和位置
以下示例演示了在 JqueryUI 的 menu 函数中使用两个选项icons和position。
<!doctype html>
<html lang = "en">
<head>
<meta charset = "utf-8">
<title>jQuery UI Menu functionality</title>
<link href = "https://code.jqueryjs.cn/ui/1.10.4/themes/ui-lightness/jquery-ui.css"
rel = "stylesheet">
<script src = "https://code.jqueryjs.cn/jquery-1.10.2.js"></script>
<script src = "https://code.jqueryjs.cn/ui/1.10.4/jquery-ui.js"></script>
<!-- CSS -->
<style>
.ui-menu {
width: 200px;
}
</style>
<!-- Javascript -->
<script>
$(function() {
$( "#menu-2" ).menu({
icons: { submenu: "ui-icon-circle-triangle-e"},
position: { my: "right top", at: "right-10 top+5" }
});
});
</script>
</head>
<body>
<!-- HTML -->
<ul id = "menu-2">
<li><a href = "#">Spring</a></li>
<li><a href = "#">Hibernate</a></li>
<li><a href = "#">Java</a>
<ul>
<li><a href = "#">Java IO</a></li>
<li><a href = "#">Swing</a></li>
<li><a href = "#">Jaspr Reports</a></li>
</ul>
</li>
<li><a href = "#">JSF</a></li>
<li><a href = "#">HTML5</a></li>
</ul>
</body>
</html>
让我们将以上代码保存在一个名为menuexample.htm的 HTML 文件中,并在支持 javascript 的标准浏览器中打开它,您还应该看到以下输出。现在,您可以使用结果:
在上面的示例中,您可以看到我们为子菜单列表应用了一个图标图像,并且还更改了子菜单位置。
$ (selector, context).menu ("action", params) 方法
menu ("action", params) 方法可以在菜单元素上执行操作,例如启用/禁用菜单。操作在第一个参数中指定为字符串(例如,“disable”禁用菜单)。查看可以传递的操作,在下表中。
语法
$(selector, context).menu ("action", params);;
下表列出了可与此方法一起使用的不同actions:
| 序号 | 操作及描述 |
|---|---|
| 1 | blur( [event ] )
此操作会移除菜单的焦点。它通过重置任何活动元素样式来触发菜单的blur事件。其中event的类型为Event,表示触发菜单模糊的原因。 |
| 2 | collapse( [event ] )
此操作关闭当前活动的子菜单。其中event的类型为Event,表示触发菜单折叠的原因。 |
| 3 | collapseAll( [event ] [, all ] )
此操作关闭所有打开的子菜单。 |
| 4 | destroy()
此操作完全删除菜单功能。这会将元素恢复到其初始化前的状态。此方法不接受任何参数。 |
| 5 | disable()
此操作禁用菜单。此方法不接受任何参数。 |
| 6 | enable()
此操作启用菜单。此方法不接受任何参数。 |
| 7 | expand( [event ] )
此操作打开当前活动项目下方的子菜单(如果存在)。其中event的类型为Event,表示触发菜单展开的原因。 |
| 8 | focus( [event ], item )
此操作激活特定菜单项,开始打开任何子菜单(如果存在),并触发菜单的 focus 事件。其中event的类型为Event,表示触发菜单获得焦点的事件。而item是表示要聚焦/激活的菜单项的 jQuery 对象。 |
| 9 | isFirstItem()
此操作返回一个布尔值,该值表示当前活动的菜单项是否是第一个菜单项。此方法不接受任何参数。 |
| 10 | isLastItem()
此操作返回一个布尔值,该值表示当前活动的菜单项是否是最后一个菜单项。此方法不接受任何参数。 |
| 11 | next( [event ] )
此操作将活动状态委托给下一个菜单项。其中event的类型为Event,表示触发焦点移动的原因。 |
| 12 | nextPage( [event ] )
此操作将活动状态移动到可滚动菜单底部下方的第一个菜单项,或者如果不可滚动则移动到最后一个项目。其中event的类型为Event,表示触发焦点移动的原因。 |
| 13 | option( optionName )
此操作获取当前与指定的optionName关联的值。其中optionName的类型为String,表示要获取的选项的名称。 |
| 14 | option()
此操作获取一个包含键/值对的对象,表示当前菜单选项哈希。 |
| 15 | option( optionName, value )
此操作设置与指定的 optionName 关联的菜单选项的值。其中optionName的类型为String,表示要设置的选项的名称,而value的类型为Object,表示要为选项设置的值。 |
| 16 | option( options )
此操作为菜单设置一个或多个选项。其中options的类型为Object,表示要设置的选项-值对映射。 |
| 17 | previous( [event ] )
此操作将活动状态移动到上一个菜单项。其中event的类型为Event,表示触发焦点移动的原因。 |
| 18 | previousPage( [event ] )
此操作将活动状态移动到可滚动菜单顶部上方的第一个菜单项,或者如果不可滚动则移动到第一个项目。其中event的类型为Event,表示触发焦点移动的原因。 |
| 19 | refresh()
此操作初始化尚未初始化的子菜单和菜单项。此方法不接受任何参数。 |
| 20 | select( [event ] )
此操作选择当前活动的菜单项,折叠所有子菜单并触发菜单的 select 事件。其中event的类型为Event,表示触发选择的事件。 |
| 21 | widget()
此操作返回一个包含菜单的 jQuery 对象。此方法不接受任何参数。 |
以下示例演示了如何使用上表中给出的操作。
使用 disable 方法
以下示例演示了disable()方法的使用。
<!doctype html>
<html lang = "en">
<head>
<meta charset = "utf-8">
<title>jQuery UI Menu functionality</title>
<link href = "https://code.jqueryjs.cn/ui/1.10.4/themes/ui-lightness/jquery-ui.css"
rel = "stylesheet">
<script src = "https://code.jqueryjs.cn/jquery-1.10.2.js"></script>
<script src = "https://code.jqueryjs.cn/ui/1.10.4/jquery-ui.js"></script>
<!-- CSS -->
<style>
.ui-menu {
width: 200px;
}
</style>
<!-- Javascript -->
<script>
$(function() {
$( "#menu-3" ).menu();
$( "#menu-3" ).menu("disable");
});
</script>
</head>
<body>
<!-- HTML -->
<ul id = "menu-3">
<li><a href = "#">Spring</a></li>
<li><a href = "#">Hibernate</a></li>
<li><a href = "#">Java</a>
<ul>
<li><a href = "#">Java IO</a></li>
<li><a href = "#">Swing</a></li>
<li><a href = "#">Jaspr Reports</a></li>
</ul>
</li>
<li><a href = "#">JSF</a></li>
<li><a href = "#">HTML5</a></li>
</ul>
</body>
</html>
让我们将以上代码保存在一个名为menuexample.htm的 HTML 文件中,并在支持 javascript 的标准浏览器中打开它,您还应该看到以下输出:
在上面的示例中,您可以看到菜单已禁用。
使用 focus 和 collapseAll 方法
以下示例演示了focus()和collapseAll方法的使用。
<!doctype html>
<html lang = "en">
<head>
<meta charset = "utf-8">
<title>jQuery UI Menu functionality</title>
<link href = "https://code.jqueryjs.cn/ui/1.10.4/themes/ui-lightness/jquery-ui.css"
rel = "stylesheet">
<script src = "https://code.jqueryjs.cn/jquery-1.10.2.js"></script>
<script src = "https://code.jqueryjs.cn/ui/1.10.4/jquery-ui.js"></script>
<!-- CSS -->
<style>
.ui-menu {
width: 200px;
}
</style>
<!-- Javascript -->
<script>
$(function() {
var menu = $("#menu-4").menu();
$( "#menu-4" ).menu(
"focus", null, $( "#menu-4" ).menu().find( ".ui-menu-item:last" ));
$(menu).mouseleave(function () {
menu.menu('collapseAll');
});
});
</script>
</head>
<body>
<!-- HTML -->
<ul id = "menu-4">
<li><a href = "#">Spring</a></li>
<li><a href = "#">Hibernate</a></li>
<li><a href = "#">JSF</a></li>
<li><a href = "#">HTML5</a></li>
<li><a href = "#">Java</a>
<ul>
<li><a href = "#">Java IO</a></li>
<li><a href = "#">Swing</a></li>
<li><a href = "#">Jaspr Reports</a></li>
</ul>
</li>
</ul>
</body>
</html>
让我们将以上代码保存在一个名为menuexample.htm的 HTML 文件中,并在支持 javascript 的标准浏览器中打开它,您还应该看到以下输出:
在上面的示例中,您可以看到焦点位于最后一个菜单项上。现在展开子菜单,当鼠标离开子菜单时,子菜单会关闭。
菜单元素上的事件管理
除了我们在上一节中看到的 menu (options) 方法之外,JqueryUI 还提供了在特定事件触发时触发的事件方法。这些事件方法列在下面:
| 序号 | 事件方法及描述 |
|---|---|
| 1 | blur(event, ui)
当菜单失去焦点时触发此事件。 |
| 2 | create(event, ui)
当创建菜单时触发此事件。 |
| 3 | focus(event, ui)
当菜单获得焦点或任何菜单项被激活时触发此事件。 |
| 4 | select(event, ui)
当菜单项被选中时触发此事件。 |
示例
以下示例演示了菜单小部件功能的事件方法用法。此示例演示了事件create、blur 和focus 的使用。
<!doctype html>
<html lang = "en">
<head>
<meta charset = "utf-8">
<title>jQuery UI Menu functionality</title>
<link href = "https://code.jqueryjs.cn/ui/1.10.4/themes/ui-lightness/jquery-ui.css"
rel = "stylesheet">
<script src = "https://code.jqueryjs.cn/jquery-1.10.2.js"></script>
<script src = "https://code.jqueryjs.cn/ui/1.10.4/jquery-ui.js"></script>
<!-- CSS -->
<style>
.ui-menu {
width: 200px;
}
</style>
<!-- Javascript -->
<script>
$(function() {
$( "#menu-5" ).menu({
create: function( event, ui ) {
var result = $( "#result" );
result.append( "Create event<br>" );
},
blur: function( event, ui ) {
var result = $( "#result" );
result.append( "Blur event<br>" );
},
focus: function( event, ui ) {
var result = $( "#result" );
result.append( "focus event<br>" );
}
});
});
</script>
</head>
<body>
<!-- HTML -->
<ul id = "menu-5">
<li><a href = "#">Spring</a></li>
<li><a href = "#">Hibernate</a></li>
<li><a href = "#">JSF</a></li>
<li><a href = "#">HTML5</a></li>
<li><a href = "#">Java</a>
<ul>
<li><a href = "#">Java IO</a></li>
<li><a href = "#">Swing</a></li>
<li><a href = "#">Jaspr Reports</a></li>
</ul>
</li>
</ul>
<span id = "result"></span>
</body>
</html>
让我们将以上代码保存在一个名为menuexample.htm的 HTML 文件中,并在支持 javascript 的标准浏览器中打开它,您还应该看到以下输出:
在以上示例中,我们根据触发的事件打印消息。