fix(tabs): 优化 `getHeaderItem` 等方法的 `index` 参数的类型检测

pull/2690/head
贤心 2025-06-15 16:04:58 +08:00
parent 40c3e72ea3
commit 1c7194ded3
2 changed files with 22 additions and 17 deletions

View File

@ -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` 属性值 <sup>2.11.2+</sup>
- 参数 `index` : 若传入 number 类型,则为标签索引;若传入 string 类型,则为标签的 `lay-id` 属性值 <sup>2.11.2+</sup>
该方法用于获取标签内容项元素。

View File

@ -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);
};
/**