From 1c7194ded3ec4fb1ea9f0ba48d411bbfc8acc407 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B4=A4=E5=BF=83?= <3277200+sentsim@users.noreply.github.com> Date: Sun, 15 Jun 2025 16:04:58 +0800 Subject: [PATCH] =?UTF-8?q?fix(tabs):=20=E4=BC=98=E5=8C=96=20`getHeaderIte?= =?UTF-8?q?m`=20=E7=AD=89=E6=96=B9=E6=B3=95=E7=9A=84=20`index`=20=E5=8F=82?= =?UTF-8?q?=E6=95=B0=E7=9A=84=E7=B1=BB=E5=9E=8B=E6=A3=80=E6=B5=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/tabs/index.md | 6 +++--- src/modules/tabs.js | 33 +++++++++++++++++++-------------- 2 files changed, 22 insertions(+), 17 deletions(-) diff --git a/docs/tabs/index.md b/docs/tabs/index.md index f919214b..de26219a 100644 --- a/docs/tabs/index.md +++ b/docs/tabs/index.md @@ -136,7 +136,7 @@ tabs.add('test', { `tabs.close(id, index, force)` - 参数 `id` : 组件的实例 ID -- 参数 `index` : 标签索引或标签的 `lay-id` 属性值 +- 参数 `index` : 若传入 number 类型,则为标签索引;若传入 string 类型,则为标签的 `lay-id` 属性值 - 参数 `force` : 是否强制关闭。若设置 `true` 将忽略 `beforeClose` 事件行为。默认 `false` 该方法用于关闭指定的标签项。 @@ -224,7 +224,7 @@ console.log(data); `tabs.getHeaderItem(id, index)` - 参数 `id` : 组件的实例 ID -- 参数 `index` : 标签索引或标签的 `lay-id` 属性值 +- 参数 `index` : 若传入 number 类型,则为标签索引;若传入 string 类型,则为标签的 `lay-id` 属性值 该方法用于获取标签头部项元素。 @@ -238,7 +238,7 @@ var headerItem = tabs.getHeaderItem('test', 'abc'); // 获取 lay-id="abc" 的 `tabs.getBodyItem(id, index)` - 参数 `id` : 组件的实例 ID -- 参数 `index` : 标签索引或标签的 `lay-id` 属性值 2.11.2+ +- 参数 `index` : 若传入 number 类型,则为标签索引;若传入 string 类型,则为标签的 `lay-id` 属性值 2.11.2+ 该方法用于获取标签内容项元素。 diff --git a/src/modules/tabs.js b/src/modules/tabs.js index 9ae8b1e1..ca188943 100644 --- a/src/modules/tabs.js +++ b/src/modules/tabs.js @@ -662,30 +662,35 @@ layui.define('component', function(exports) { Class.prototype.findHeaderItem = function(index) { var container = this.getContainer(); var headerItems = container.header.items; - var headerItem = headerItems.filter('[lay-id="'+ index +'"]'); - return headerItem[0] ? headerItem : headerItems.eq(index); + + // 根据 lay-id 匹配 + if (typeof index === 'string') { + return headerItems.filter('[lay-id="'+ index +'"]'); + } + + return headerItems.eq(index); }; /** * 获取标签内容项 - * @param {number} index - 标签索引或 lay-id + * @param {number|string} index - 标签索引或 lay-id */ Class.prototype.findBodyItem = function(index) { var container = this.getContainer(); var bodyItems = container.body.items; - var bodyItem = bodyItems.filter('[lay-id="'+ index +'"]'); - return bodyItem[0] ? bodyItem : function() { - // 若未匹配到 lay-id 对应内容项,则继续匹配对应头部项 - var headerItems = container.header.items; - var headerItem = headerItems.filter('[lay-id="'+ index +'"]'); + // 根据 lay-id 匹配 + if (typeof index === 'string') { + var bodyItem = bodyItems.filter('[lay-id="'+ index +'"]'); + return bodyItem[0] ? bodyItem : function() { + // 若未匹配到 lay-id 对应内容项,则通过对应头部项的索引匹配内容项 + var headerItems = container.header.items; + var headerItem = headerItems.filter('[lay-id="'+ index +'"]'); + return bodyItems.eq(headerItem.index()); + }(); + } - if (headerItem[0]) { - index = headerItem.index(); - } - - return bodyItems.eq(index); - }(); + return bodyItems.eq(index); }; /**