下拉菜单
dropdown
是基于基础菜单结构衍生的多功能通用下拉菜单组件,它将原本静态呈现的菜单,通过各种事件的形式触发,从而以独立面板的形式弹出。不仅可用作常见的下拉菜单,更可用于右键菜单来实现更多的交互可能。
如下以弹出一个 tab
为例
在 content
属性中传入任意的 html 内容,可替代默认的下拉菜单结构,从而实现更丰富的弹出内容。
API | 描述 |
---|---|
var dropdown = layui.dropdown | 获得 dropdown 模块。 |
dropdown.render(options) | dropdown 组件渲染,核心方法。 |
dropdown.reload(id, options) | 完整重载 |
dropdown.reloadData(id, options) 2.8+ | 仅重载数据或内容 |
dropdown.close(id) | 关闭对应的组件面板 |
dropdown.open(id) 2.9.8+ | 打开对应的组件面板 |
dropdown.render(options);
options
: 基础属性配置项。#详见属性
elem
属性外,其他基础属性也可以直接写在元素的 lay-options="{}"
属性中。<button class="layui-btn" id="ID-test-dropdown">下拉菜单</button>
<button class="layui-btn class-test-dropdown" lay-options="{
data: [{title: 'item 1', id: 1}, {title: 'item 2', id: 2}]
}">下拉菜单</button>
<button class="layui-btn class-test-dropdown" lay-options="{
data: [{title: 'item A', id: 'a'}, {title: 'item B', id: 'b'}]
}">下拉菜单</button>
<!-- import layui -->
<script>
layui.use(function(){
var dropdown = layui.dropdown;
// 单个渲染
dropdown.render({
elem: '#ID-test-dropdown',
// …
});
// 批量渲染
dropdown.render({
elem: '.class-test-dropdown',
// …
});
});
</script>
属性名 | 描述 | 类型 | 默认值 |
---|---|---|---|
elem |
绑定元素选择器或 DOM 对象 |
string/DOM | - |
下拉菜单的数据源。格式详见:#data 格式 |
array | - | |
id |
设定实例唯一索引,以便用于其他方法对例进行相关操作。若该属性未设置,则默认从 |
string | - |
trigger |
触发组件的事件类型。支持所有事件,如: |
string |
|
closeOnClick 2.9.18+ |
下拉面板打开后,再次点击目标元素时是否关闭该面板。 |
boolean |
|
show |
是否渲染即显示组件面板。该属性一般在重载方法中传递。 |
boolean |
|
align |
下拉面板相对绑定元素的水平对齐方式。支持以下可选值:
|
string |
|
isAllowSpread |
是否允许菜单组展开收缩 |
boolean |
|
isSpreadItem |
是否初始展开子菜单 |
boolean |
|
accordion 2.8.18+ |
是否开启手风琴效果 |
boolean |
|
delay |
延迟触发的毫秒数。当
|
number/array |
|
className |
自定义组件主容器的样式类名,从而在外部重新定义样式。 |
string | - |
style |
设置组件主容器的 |
string | - |
shade 2.8+ |
设置弹出时的遮罩。支持以下方式赋值:
|
number array |
|
templet |
全局定义菜单的列表模板,可添加任意 注 2.8+ : 模板亦可采用函数写法:
|
string function |
- |
content |
自定义组件内容,从而替代默认的菜单结构。用法详见:#示例 |
string | - |
clickScope 2.8+ |
设置触发点击事件的菜单范围。 支持以下可选值:
默认无需设置,即父级菜单不触发事件 |
string | - |
customName 2.8.14+ |
自定义 |
object | - |
ready |
组件成功弹出后的回调函数。返回的参数如下:
|
||
菜单项被点击时的回调函数。返回的参数如下:
用法详见:#示例 |
|||
close 2.9.7+ |
面板关闭后的回调函数。返回的参数如下:
|
||
onClickOutside 2.9.18+ |
点击 dropdown 外部时的回调函数,返回
|
属性名 | 描述 | 类型 | 默认值 |
---|---|---|---|
title |
菜单标题 |
string | - |
id |
菜单 ID。用户菜单项唯一索引 |
number/string | - |
type |
菜单项的类型,支持的可选值如下:
|
string |
|
href |
菜单项的 url 地址。若填写,点击菜单将直接发生跳转。 |
string | - |
target |
菜单 url 打开方式,需设置 |
string |
|
disabled 2.8+ |
菜单项是否禁用状态 |
boolean |
|
templet |
自定义当前菜单项模板,优先级高于基础属性 |
string/function | - |
child |
子级菜单数据集合。参数同父级,可无限嵌套。 |
array | - |
您可以对上述 data
中常用的字段进行自定义名称 2.8.14+ :
var dropdown = layui.dropdown;
// 渲染
dropdown.render({
elem: '', // 绑定元素选择器
data: [], // 数据源
customName: { // 自定义 data 字段名 --- 2.8.14+
id: 'id',
title: 'title',
children: 'child'
},
// 其他属性 …
});
即对一段已经渲染好的下拉菜单重新设置相关属性并渲染,可分为以下几种重载方式:
重载方式 | API |
---|---|
完整重载 | dropdown.reload(id, options, deep) |
仅数据或内容重载 2.8+ | dropdown.reloadData(id, options, deep) |
两者重载的使用方式完全相同,区别只是在于参与重载时的属性差异及其对应的效果差异。一般按照实际需求选择使用。
dropdown.reload(id, options);
id
: 组件渲染时定义的 id
属性值options
: 基础属性配置项。#详见属性该方法用于对下拉菜单进行完整重载,所有属性均可参与到重载中。
dropdown.reloadData(id, options);
dropdown.reload(id, options)
参数使用该方法时,与数据无关的属性不会参与到重载中。因此若只是更新数据或内容,该方法可大幅提升体验。
dropdown.close(id);
id
: 组件渲染时定义的 id
属性值该方法用于关闭对应的 dropdown
组件面板。
var dropdown = layui.dropdown;
// 渲染
dropdown.render({
elem: '', // 绑定元素选择器
id: 'test', // 自定义 id
// 其他属性 …
});
// 关闭对应的组件面板
dropdown.close('test');
dropdown.open(id);
id
: 组件渲染时定义的 id
属性值该方法用于打开对应的 dropdown
组件面板。
var dropdown = layui.dropdown;
// 渲染
dropdown.render({
elem: '', // 绑定元素选择器
id: 'test', // 自定义 id
// 其他属性 …
});
// 打开对应的组件面板
dropdown.open('test');