layui/docs/tab/index.md

405 lines
14 KiB
Markdown
Raw Normal View History

2023-04-24 08:42:47 +08:00
---
title: 选项卡组件 tab
toc: true
---
2025-03-02 22:39:55 +08:00
# ~~选项卡组件~~
> 📣 <span style="color: #ff5722;">升级提示:我们在 2.10 版本中新增了全新的 tabs 标签页组件,用于替代原 `element` 模块中的 `tab` 组件,建议过渡到全新的 tabs 组件,旧的 ~~tab~~ 组件将在后续合适的版本中移除。</span> [前往全新 tabs 组件](../tabs/)
2023-04-24 08:42:47 +08:00
> 选项卡组件 `tab` 是指可进行标签页切换的一段容器,常广泛应用于 Web 页面。由于为了向下兼容等诸多历史原因,在 2.x 版本中,`tab` 组件属于 `element` 模块的子集。
<h2 id="examples" lay-toc="{hot: true}" style="margin-bottom: 0;">示例</h2>
<div class="ws-detail">
2023-05-10 12:14:45 +08:00
{{- d.include("/tab/detail/demo.md") }}
2023-04-24 08:42:47 +08:00
</div>
<h2 id="skin" lay-toc="{hot: true}">风格</h2>
tab 组件提供了三种 UI 风格,分别为:
| 风格 | className |
| --- | --- |
| [默认风格](#default) | `class="layui-tab"` |
| [简约风格](#brief) | `class="layui-tab layui-tab-brief"` |
| [卡片风格](#card) | `class="layui-tab layui-tab-card"` |
<h3 id="default" class="ws-anchor ws-bold">默认风格</h3>
<pre class="layui-code" lay-options="{preview: true, layout: ['preview', 'code'], tools: ['full'], done: function(obj){
obj.render();
}}">
<textarea>
<div class="layui-tab">
<ul class="layui-tab-title">
<li class="layui-this">标签1</li>
<li>标签2</li>
<li>标签3</li>
<li>标签4</li>
<li>标签5</li>
</ul>
<div class="layui-tab-content">
<div class="layui-tab-item layui-show">内容-1</div>
<div class="layui-tab-item">内容-2</div>
<div class="layui-tab-item">内容-3</div>
<div class="layui-tab-item">内容-4</div>
<div class="layui-tab-item">内容-5</div>
</div>
</div>
<!-- import layui -->
2023-04-24 08:42:47 +08:00
</textarea>
</pre>
<h3 id="brief" class="ws-anchor ws-bold">简约风格</h3>
<pre class="layui-code" lay-options="{preview: true, layout: ['preview', 'code'], tools: ['full'], done: function(obj){
obj.render();
}}">
<textarea>
<div class="layui-tab layui-tab-brief">
<ul class="layui-tab-title">
<li class="layui-this">标签1</li>
<li>标签2</li>
<li>标签3</li>
<li>标签4</li>
<li>标签5</li>
</ul>
<div class="layui-tab-content">
<div class="layui-tab-item layui-show">内容-1</div>
<div class="layui-tab-item">内容-2</div>
<div class="layui-tab-item">内容-3</div>
<div class="layui-tab-item">内容-4</div>
<div class="layui-tab-item">内容-5</div>
</div>
</div>
<!-- import layui -->
2023-04-24 08:42:47 +08:00
</textarea>
</pre>
<h3 id="card" class="ws-anchor ws-bold">卡片风格</h3>
<pre class="layui-code" lay-options="{preview: true, layout: ['preview', 'code'], tools: ['full'], done: function(obj){
obj.render();
}}">
<textarea>
<div class="layui-tab layui-tab-card">
<ul class="layui-tab-title">
<li class="layui-this">标签1</li>
<li>标签2</li>
<li>标签3</li>
<li>标签4</li>
<li>标签5</li>
</ul>
<div class="layui-tab-content">
<div class="layui-tab-item layui-show">内容-1</div>
<div class="layui-tab-item">内容-2</div>
<div class="layui-tab-item">内容-3</div>
<div class="layui-tab-item">内容-4</div>
<div class="layui-tab-item">内容-5</div>
</div>
</div>
<!-- import layui -->
2023-04-24 08:42:47 +08:00
</textarea>
</pre>
<h2 id="api" lay-toc="{}">API</h2>
| API | 描述 |
| --- | --- |
| var element = layui.element | 获得 `element` 模块。 |
| [element.render(\'tab\', filter)](#element.render) | 渲染 tab 组件 |
| [element.tabAdd(filter, options)](#element.tabAdd) | 添加 tab 选项 |
| [element.tabDelete(filter, layid, force)](#element.tabDelete) | 删除 tab 选项 |
| [element.tabChange(filter, layid, force)](#element.tabChange) | 切换 tab 选项 |
2023-04-24 08:42:47 +08:00
| [element.tab(options)](#element.tab) | 绑定自定义 tab 元素 |
<h3 id="options" lay-toc="{level: 2}" class="ws-bold">元素属性</h3>
| 属性 | 描述 |
| --- | --- |
| lay-allowclose | 是否开启删除图标。设置在 tab 容器 `<ul class="layui-tab">` 上。 <br><sup>2.9.11+</sup>: 若需要单独关闭某一个选项卡的删除图标,可在选项卡标题元素 `<li>` 上设置 `lay-allowclose="false"`|
| lay-id | tab 选项唯一 ID一般用于外部对 tab 的删除和切换等操作。设置在 tab 中的 `<li>` 元素上。在外部附加选项卡拖拽排序时,`layui-tab-item` 元素也要设置 ID |
2023-04-24 08:42:47 +08:00
<h3 id="allowclose" lay-toc="{level: 2}" class="ws-bold">开启删除</h3>
<pre class="layui-code" lay-options="{preview: true, layout: ['preview', 'code'], tools: ['full'], done: function(obj){
obj.render();
}}">
<textarea>
<div class="layui-tab" lay-allowclose="true">
<ul class="layui-tab-title">
<li class="layui-this" lay-allowclose="false">标签1</li>
2023-04-24 08:42:47 +08:00
<li>标签2</li>
<li>标签3</li>
<li>标签4</li>
<li>标签5</li>
</ul>
<div class="layui-tab-content">
<div class="layui-tab-item layui-show">单独设置「标签1」不允许删除 <sup>2.9.11+</sup></div>
2023-04-24 08:42:47 +08:00
<div class="layui-tab-item">内容-2</div>
<div class="layui-tab-item">内容-3</div>
<div class="layui-tab-item">内容-4</div>
<div class="layui-tab-item">内容-5</div>
</div>
</div>
2023-05-03 17:17:39 +08:00
<!-- import layui -->
2023-04-24 08:42:47 +08:00
</textarea>
</pre>
<h3 id="element.render" lay-toc="{level: 2}" class="ws-bold">渲染 tab</h3>
`element.render('tab', filter);`
- 参数 `'tab'` 是渲染 tab 的固定值。
- 参数 `filter` : 对应 tab 容器 `lay-filter` 的属性值或<sup>2.9.15+</sup>指定元素的 jQuery 对象。
2023-04-24 08:42:47 +08:00
tab 组件会在元素加载完毕后,自动对 tab 元素完成一次渲染,因此该方法主要用于对动态插入的 tab 元素的初始化渲染。
```
<div id="test"></div>
2025-03-02 22:39:55 +08:00
2023-05-03 17:17:39 +08:00
<!-- import layui -->
2023-04-24 08:42:47 +08:00
<script>
layui.use(function(){
var element = layui.element;
var $ = layui.$;
// 动态插入 tab 元素
$('#test').html(`
<div class="layui-tab" lay-filter="demo-filter-tab">
<!---->
</div>
`);
// 渲染 tab 组件
element.render('tab', 'demo-filter-tab');
});
</script>
```
<h3 id="element.tabAdd" lay-toc="{level: 2}" class="ws-bold">添加 tab</h3>
`element.tabAdd(filter, options);`
- 参数 `filter` : tab 容器(`class="layui-tab"`)的 `lay-filter` 属性值
feat: 重构 laytpl,增强对更多复杂模板结构的解析能力 (#2577) * feat: 重构 laytpl,增强对更多复杂模板结构的解析能力 * Squashed commit of the following: commit 6884f80378f7606366c73e75c45946acc5817c95 Author: 贤心 <3277200+sentsim@users.noreply.github.com> Date: Wed Mar 19 14:45:58 2025 +0800 release: v2.10.1 commit 8d643ad6dc910ab86a4883ffe27ca3626553f892 Merge: 5521e48c 213fe5a2 Author: corededitor <107152508+corededitor@users.noreply.github.com> Date: Wed Mar 19 14:24:50 2025 +0800 feat: Merge pull request #2566 from layui/feat/component feat: 优化 component, tabs 若干功能 commit 213fe5a2090a7aef26af71fb5a0d6dc517b9a915 Author: 贤心 <3277200+sentsim@users.noreply.github.com> Date: Wed Mar 19 14:15:39 2025 +0800 docs: 添加 component 文档中实验性选项标记 commit 5521e48c05cd496476729cd33c754961c78cd2ac Author: 贤心 <3277200+sentsim@users.noreply.github.com> Date: Wed Mar 19 14:10:46 2025 +0800 fix: 修复 `body` 初始 `line-height` 无效的问题 (#2569) commit 8c7cf0f6069a44ce7160fb2d69549956471bd684 Author: 青崖 <33601030+bxjt123@users.noreply.github.com> Date: Wed Mar 19 14:10:08 2025 +0800 优化 checkbox 标签风格选中且禁用时的显示 (#2563) commit 23b21254d4c4be4fd7e99e17f60c991e874d22c0 Author: 贤心 <3277200+sentsim@users.noreply.github.com> Date: Wed Mar 19 14:04:44 2025 +0800 docs: Squashed commit of the following: commit 95a0503f415126edabefb2cc9646a59bcb0932f3 Merge: e6eb86ba 87ba4c43 Author: 贤心 <3277200+sentsim@users.noreply.github.com> Date: Wed Mar 19 14:03:13 2025 +0800 Merge branch 'main' into 2.x commit e6eb86bacb130fcf57b6407b0c426ca7f770b326 Author: morning-star <26325820+Sight-wcg@users.noreply.github.com> Date: Wed Mar 19 14:02:05 2025 +0800 docs(slider): 修正错别字 (#2578) commit 46f7a9783e039bdc0efded87640fdfab31209f67 Merge: df1fc4f4 c204590a Author: 贤心 <3277200+sentsim@users.noreply.github.com> Date: Fri Mar 14 19:07:50 2025 +0800 Merge branch 'main' into 2.x commit df1fc4f419819317c012091691db1012d48d5800 Author: itletu <itletu@163.com> Date: Mon Mar 10 13:54:06 2025 +0800 docs: 更正 class 公共类文档错误 (#2544) | layui-border-box | 设置元素及其所有子元素均为 `box-sizing: border-box` 模型的容器 | commit 87ba4c4394884b794da84a3f1bc9ba786cf748e2 Author: 贤心 <3277200+sentsim@users.noreply.github.com> Date: Wed Mar 19 13:41:33 2025 +0800 docs(version): 优化 2.9.x 锚点 commit a0f533f0fdfa34dba83bfe81ffa366c051859947 Author: 贤心 <3277200+sentsim@users.noreply.github.com> Date: Wed Mar 19 13:37:29 2025 +0800 docs: 修复 tabs 文档示例异常问题 commit 0f0584e2edc94a6aa483f4b4136a05ed599b0fb4 Author: 贤心 <3277200+sentsim@users.noreply.github.com> Date: Wed Mar 19 13:35:00 2025 +0800 docs: 修复 tabs 文档中自定义事件示例重新点击 Preview 失效的问题 commit 172957d2433c3a592c387f5a9f394734b4b127c0 Author: 贤心 <3277200+sentsim@users.noreply.github.com> Date: Wed Mar 19 13:29:09 2025 +0800 docs: 优化文档中的用词细节 (#2571) commit 094be4ddcccbb18caa696af65083562960929437 Author: letianpailove <113023596+letianpailove@users.noreply.github.com> Date: Wed Mar 19 13:28:46 2025 +0800 fix: 更正 class 公共类文档错误 (#2562) commit 53ded26cb96009330977320b5991bbcd17468eb7 Author: 贤心 <3277200+sentsim@users.noreply.github.com> Date: Sun Mar 16 00:15:25 2025 +0800 fix: 优化 tabs 重载时未按照传入的 closable 正确渲染可关闭状态 commit bd892bf87effa582bf8e3655c710d52f4066b2a5 Author: 贤心 <3277200+sentsim@users.noreply.github.com> Date: Sun Mar 16 00:15:17 2025 +0800 feat(component): 新增 cache 原型方法,用于元素缓存操作 commit 6ccc5a453d250537117646e8f9fe751153fd91a3 Author: 贤心 <3277200+sentsim@users.noreply.github.com> Date: Sun Mar 16 00:14:18 2025 +0800 fix(component): 优化元素 lay-options 属性上的配置在重载时的优先级 commit 79b0a56f506b0553fa67e4ce7467a21d4d8660ce Author: 贤心 <3277200+sentsim@users.noreply.github.com> Date: Sun Mar 16 00:13:55 2025 +0800 fix(component): 修复 reload 时传入的选项未正确合并的问题 * refactor(laytpl): 优化代码细节 * docs: 重写 laytpl 模块文档
2025-03-27 23:55:04 +08:00
- 参数 `options` : 添加 tab 时的属性选项,见下表:
2023-04-24 08:42:47 +08:00
2023-06-06 10:05:45 +08:00
| options | 描述 | 类型 | 默认 |
| --- | --- | --- | --- |
| title | 选项卡的标题 | string | - |
| content | 选项卡的内容,支持传入 `html` | string | - |
| id | 选项卡标题元素的 `lay-id` 属性值 | string | - |
| change | 是否添加 tab 完毕后即自动切换 | boolean | `false` |
| allowClose <sup>2.9.11+</sup>| 是否开启删除图标 | boolean | `false` |
2023-04-24 08:42:47 +08:00
该方法用于添加 tab 选项。用法详见 : [#示例](#examples)
<h3 id="element.tabDelete" lay-toc="{level: 2}" class="ws-bold">删除 tab</h3>
`element.tabDelete(filter, layid, force);`
2023-04-24 08:42:47 +08:00
- 参数 `filter` : tab 容器(`class="layui-tab"`)的 `lay-filter` 属性值
- 参数 `layid` : 选项卡标题元素的 `lay-id` 属性值
- 参数 `force` <sup>2.9.21+</sup>
: 是否强制删除 tab。若设置 `true` 将忽略 `tabBeforeDelete` 事件行为。默认 `false`
2023-04-24 08:42:47 +08:00
该方法用于删除 tab 选项。用法详见 : [#示例](#examples)
<h3 id="element.tabChange" lay-toc="{level: 2}" class="ws-bold">切换 tab</h3>
`element.tabChange(filter, layid, force);`
2023-04-24 08:42:47 +08:00
- 参数 `filter` : tab 容器(`class="layui-tab"`)的 `lay-filter` 属性值
- 参数 `layid` : 选项卡标题元素的 `lay-id` 属性值
2024-08-16 22:07:52 +08:00
- 参数 `force` <sup>2.9.15+</sup>
: 是否强制执行 tab 切换。设置 `true` 将忽略 `tabBeforeChange` 事件行为。默认 `false`
2023-04-24 08:42:47 +08:00
该方法用于切换到对应的 tab 选项。用法详见 : [#示例](#examples)
<h3 id="element.tab" lay-toc="{level: 2}" class="ws-bold">自定义 tab</h3>
`element.tab(options);`
feat: 重构 laytpl,增强对更多复杂模板结构的解析能力 (#2577) * feat: 重构 laytpl,增强对更多复杂模板结构的解析能力 * Squashed commit of the following: commit 6884f80378f7606366c73e75c45946acc5817c95 Author: 贤心 <3277200+sentsim@users.noreply.github.com> Date: Wed Mar 19 14:45:58 2025 +0800 release: v2.10.1 commit 8d643ad6dc910ab86a4883ffe27ca3626553f892 Merge: 5521e48c 213fe5a2 Author: corededitor <107152508+corededitor@users.noreply.github.com> Date: Wed Mar 19 14:24:50 2025 +0800 feat: Merge pull request #2566 from layui/feat/component feat: 优化 component, tabs 若干功能 commit 213fe5a2090a7aef26af71fb5a0d6dc517b9a915 Author: 贤心 <3277200+sentsim@users.noreply.github.com> Date: Wed Mar 19 14:15:39 2025 +0800 docs: 添加 component 文档中实验性选项标记 commit 5521e48c05cd496476729cd33c754961c78cd2ac Author: 贤心 <3277200+sentsim@users.noreply.github.com> Date: Wed Mar 19 14:10:46 2025 +0800 fix: 修复 `body` 初始 `line-height` 无效的问题 (#2569) commit 8c7cf0f6069a44ce7160fb2d69549956471bd684 Author: 青崖 <33601030+bxjt123@users.noreply.github.com> Date: Wed Mar 19 14:10:08 2025 +0800 优化 checkbox 标签风格选中且禁用时的显示 (#2563) commit 23b21254d4c4be4fd7e99e17f60c991e874d22c0 Author: 贤心 <3277200+sentsim@users.noreply.github.com> Date: Wed Mar 19 14:04:44 2025 +0800 docs: Squashed commit of the following: commit 95a0503f415126edabefb2cc9646a59bcb0932f3 Merge: e6eb86ba 87ba4c43 Author: 贤心 <3277200+sentsim@users.noreply.github.com> Date: Wed Mar 19 14:03:13 2025 +0800 Merge branch 'main' into 2.x commit e6eb86bacb130fcf57b6407b0c426ca7f770b326 Author: morning-star <26325820+Sight-wcg@users.noreply.github.com> Date: Wed Mar 19 14:02:05 2025 +0800 docs(slider): 修正错别字 (#2578) commit 46f7a9783e039bdc0efded87640fdfab31209f67 Merge: df1fc4f4 c204590a Author: 贤心 <3277200+sentsim@users.noreply.github.com> Date: Fri Mar 14 19:07:50 2025 +0800 Merge branch 'main' into 2.x commit df1fc4f419819317c012091691db1012d48d5800 Author: itletu <itletu@163.com> Date: Mon Mar 10 13:54:06 2025 +0800 docs: 更正 class 公共类文档错误 (#2544) | layui-border-box | 设置元素及其所有子元素均为 `box-sizing: border-box` 模型的容器 | commit 87ba4c4394884b794da84a3f1bc9ba786cf748e2 Author: 贤心 <3277200+sentsim@users.noreply.github.com> Date: Wed Mar 19 13:41:33 2025 +0800 docs(version): 优化 2.9.x 锚点 commit a0f533f0fdfa34dba83bfe81ffa366c051859947 Author: 贤心 <3277200+sentsim@users.noreply.github.com> Date: Wed Mar 19 13:37:29 2025 +0800 docs: 修复 tabs 文档示例异常问题 commit 0f0584e2edc94a6aa483f4b4136a05ed599b0fb4 Author: 贤心 <3277200+sentsim@users.noreply.github.com> Date: Wed Mar 19 13:35:00 2025 +0800 docs: 修复 tabs 文档中自定义事件示例重新点击 Preview 失效的问题 commit 172957d2433c3a592c387f5a9f394734b4b127c0 Author: 贤心 <3277200+sentsim@users.noreply.github.com> Date: Wed Mar 19 13:29:09 2025 +0800 docs: 优化文档中的用词细节 (#2571) commit 094be4ddcccbb18caa696af65083562960929437 Author: letianpailove <113023596+letianpailove@users.noreply.github.com> Date: Wed Mar 19 13:28:46 2025 +0800 fix: 更正 class 公共类文档错误 (#2562) commit 53ded26cb96009330977320b5991bbcd17468eb7 Author: 贤心 <3277200+sentsim@users.noreply.github.com> Date: Sun Mar 16 00:15:25 2025 +0800 fix: 优化 tabs 重载时未按照传入的 closable 正确渲染可关闭状态 commit bd892bf87effa582bf8e3655c710d52f4066b2a5 Author: 贤心 <3277200+sentsim@users.noreply.github.com> Date: Sun Mar 16 00:15:17 2025 +0800 feat(component): 新增 cache 原型方法,用于元素缓存操作 commit 6ccc5a453d250537117646e8f9fe751153fd91a3 Author: 贤心 <3277200+sentsim@users.noreply.github.com> Date: Sun Mar 16 00:14:18 2025 +0800 fix(component): 优化元素 lay-options 属性上的配置在重载时的优先级 commit 79b0a56f506b0553fa67e4ce7467a21d4d8660ce Author: 贤心 <3277200+sentsim@users.noreply.github.com> Date: Sun Mar 16 00:13:55 2025 +0800 fix(component): 修复 reload 时传入的选项未正确合并的问题 * refactor(laytpl): 优化代码细节 * docs: 重写 laytpl 模块文档
2025-03-27 23:55:04 +08:00
- 参数 `options` : 属性选项,见下表:
2023-04-24 08:42:47 +08:00
| options | 描述 | 类型 |
| --- | --- | --- |
| headerElem | 指定自定义的 tab 头元素项选择器 | string / DOM |
| bodyElem | 指定自定义的 tab 主题内容元素项选择器 | string / DOM |
该方法用于绑定自定义 tab 元素(即非 `class="layui-tab` 定义的结构)。示例如下:
<pre class="layui-code" lay-options="{preview: true, layout: ['preview', 'code'], tools: ['full'], done: function(obj){
obj.render();
}}">
<textarea>
<style>
.demo-tab-header .layui-btn.layui-this{border-color: #1E9FFF; color: #1E9FFF;}
.demo-tab-body>div{display: none;}
</style>
<!-- 任意自定义的 tab 元素 -->
<div class="demo-tab-header layui-btn-container" id="tabHeader">
<button class="layui-btn layui-btn-primary layui-this">标签1</button>
<button class="layui-btn layui-btn-primary">标签2</button>
<button class="layui-btn layui-btn-primary">标签3</button>
</div>
<div class="demo-tab-body" id="tabBody">
<div class="layui-show">内容-1</div>
<div>内容-2</div>
<div>内容-3</div>
</div>
2023-05-03 17:17:39 +08:00
<!-- import layui -->
2023-04-24 08:42:47 +08:00
<script>
layui.use(function(){
var element = layui.element;
// 绑定自定义的 tab 元素
element.tab({
headerElem: '#tabHeader>.layui-btn',
bodyElem: '#tabBody>div'
});
});
</script>
</textarea>
</pre>
<h2 id="on" lay-toc="{anchor: null}">事件</h2>
<h3 id="on-tab" lay-toc="{level: 2}" class="ws-bold">tab 切换事件</h3>
`element.on('tab(filter)', callback);`
- 参数 `tab(filter)` 是一个特定结构。
- `tab` 为 tab 切换事件固定值;
- `filter` 为 tab 容器属性 `lay-filter` 对应的值。
- 参数 `callback` 为事件执行时的回调函数,并返回一个 `object` 类型的参数。
点击 tab 选项切换时触发。[#参考示例](#hash-match)
```
var element = layui.element;
2025-03-02 22:39:55 +08:00
2023-04-24 08:42:47 +08:00
// tab 切换事件
element.on('tab(filter)', function(data){
console.log(this); // 当前 tab 标题所在的原始 DOM 元素
console.log(data.index); // 得到当前 tab 项的所在下标
console.log(data.elem); // 得到当前的 tab 容器
console.log(data.id); // 得到当前的 tab ID(2.9.11+)
2023-04-24 08:42:47 +08:00
});
```
<h3 id="on-tabBeforeChange" lay-toc="{level: 2}" class="ws-bold">tab 切换前的事件 <sup>2.9.15+</sup></h3>
`element.on('tabBeforeChange(filter)', callback);`
- 参数 `tabBeforeChange(filter)` 是一个特定结构。
- `tabBeforeChange` 为 tab 切换前事件固定值;
- `filter` 为 tab 容器属性 `lay-filter` 对应的值。
- 参数 `callback` 为事件执行时的回调函数,并返回一个 `object` 类型的参数。
点击 tab 选项切换前触发。
```
var element = layui.element;
2025-03-02 22:39:55 +08:00
// tab 切换前的事件
element.on('tabBeforeChange(filter)', function(data){
console.log(data.elem); // 得到当前的 tab 容器
console.log(data.from.index); // 得到切换前的 tab 项所在下标
console.log(data.from.id); // 得到切换前的 tab 项所在ID
console.log(data.to.index); // 得到切换后的 tab 项所在下标
console.log(data.to.id); // 得到切换后的 tab 项所在ID
if(data.to.id === 'home') return false; // 返回 false 时阻止切换到对应的选项卡
});
```
2023-04-24 08:42:47 +08:00
<h3 id="on-tabDelete" lay-toc="{level: 2}" class="ws-bold">tab 删除事件</h3>
`element.on('tabDelete(filter)', callback);`
- 参数 `tabDelete(filter)` 是一个特定结构。
- `tabDelete` 为 tab 删除事件固定值;
- `filter` 为 tab 容器属性 `lay-filter` 对应的值。
- 参数 `callback` 为事件执行时的回调函数,并返回一个 `object` 类型的参数。
点击 tab 选项删除时触发。
```
var element = layui.element;
2025-03-02 22:39:55 +08:00
2023-04-24 08:42:47 +08:00
// tab 删除事件
element.on('tabDelete(filter)', function(data){
console.log(data.index); // 得到被删除的 tab 项的所在下标
console.log(data.elem); // 得到当前的 tab 容器
console.log(data.id); // 得到被删除的 tab 项的 ID(2.9.11+)
});
```
<h3 id="on-tabBeforeDelete" lay-toc="{level: 2}" class="ws-bold">tab 删除前的事件 <sup>2.9.11+</sup></h3>
`element.on('tabBeforeDelete(filter)', callback);`
- 参数 `tabBeforeDelete(filter)` 是一个特定结构。
- `tabBeforeDelete` 为 tab 删除前事件固定值;
- `filter` 为 tab 容器属性 `lay-filter` 对应的值。
- 参数 `callback` 为事件执行时的回调函数,并返回一个 `object` 类型的参数。
点击 tab 选项删除前触发。 示例:
<pre class="layui-code" lay-options="{preview: true, layout: ['code', 'preview'], tools: ['full'], done: function(obj){
obj.render();
}}">
<textarea>
<div class="layui-tab" lay-allowclose="true" lay-filter="test-tabs">
<ul class="layui-tab-title">
<li lay-id="1" class="layui-this">标签1</li>
<li lay-id="2">标签2</li>
<li lay-id="3">标签3</li>
<li lay-id="4">标签4</li>
<li lay-id="5">标签5</li>
</ul>
<div class="layui-tab-content">
<div class="layui-tab-item layui-show">删除标签,弹出确认提示框</div>
<div class="layui-tab-item">内容-2</div>
<div class="layui-tab-item">内容-3</div>
<div class="layui-tab-item">内容-4</div>
<div class="layui-tab-item">内容-5</div>
</div>
</div>
<!-- import layui -->
<script>
layui.use(function(){
var layer = layui.layer;
var element = layui.element;
// tab 删除前的事件
element.on('tabBeforeDelete(test-tabs)', function(data){
console.log(data.index); // 得到被删除的 tab 项的所在下标
console.log(data.elem); // 得到当前的 tab 容器
console.log(data.id); // 得到被删除的 tab 项的 ID(2.9.11+)
// 确认删除
layer.confirm(`确认删除【${this.innerText}】吗?`, function (index) {
element.tabDelete('test-tabs', data.id, true); // 确认后强制删除 - 2.9.21+
layer.close(index);
});
return false; // 返回 false 时阻止默认删除选项卡行为
});
2023-04-24 08:42:47 +08:00
});
</script>
</textarea>
</pre>
2023-04-24 08:42:47 +08:00