Merge pull request #1211 from layui/2.x

紧急修复 2.8.0-rc.11 导致的 tab 切换问题
pull/1213/head v2.8.0-rc.12
贤心 2023-03-10 19:28:21 +08:00 committed by GitHub
commit 31f016433e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 66 additions and 56 deletions

2
dist/layui.js vendored

File diff suppressed because one or more lines are too long

View File

@ -1,6 +1,6 @@
{
"name": "layui",
"version": "2.8.0-rc.11",
"version": "2.8.0-rc.12",
"description": "Classic modular Front-End UI library",
"main": "dist/layui.js",
"license": "MIT",

View File

@ -15,7 +15,7 @@
}
,Layui = function(){
this.v = '2.8.0-rc.11'; // Layui 版本号
this.v = '2.8.0-rc.12'; // Layui 版本号
}
//识别预先可能定义的指定全局对象

View File

@ -10,7 +10,10 @@ layui.define('jquery', function(exports){
var hint = layui.hint();
var device = layui.device();
var MOD_NAME = 'element', THIS = 'layui-this', SHOW = 'layui-show';
var MOD_NAME = 'element';
var THIS = 'layui-this';
var SHOW = 'layui-show';
var TITLE = '.layui-tab-title';
var Element = function(){
this.config = {};
@ -30,12 +33,11 @@ layui.define('jquery', function(exports){
// 外部 Tab 新增
Element.prototype.tabAdd = function(filter, options){
var TITLE = '.layui-tab-title'
,tabElem = $('.layui-tab[lay-filter='+ filter +']')
,titElem = tabElem.children(TITLE)
,barElem = titElem.children('.layui-tab-bar')
,contElem = tabElem.children('.layui-tab-content')
,li = '<li'+ function(){
var tabElem = $('.layui-tab[lay-filter='+ filter +']');
var titElem = tabElem.children(TITLE);
var barElem = titElem.children('.layui-tab-bar');
var contElem = tabElem.children('.layui-tab-content');
var li = '<li'+ function(){
var layAttr = [];
layui.each(options, function(key, value){
if(/^(title|content)$/.test(key)) return;
@ -54,21 +56,22 @@ layui.define('jquery', function(exports){
// 外部 Tab 删除
Element.prototype.tabDelete = function(filter, layid){
var TITLE = '.layui-tab-title'
,tabElem = $('.layui-tab[lay-filter='+ filter +']')
,titElem = tabElem.children(TITLE)
,liElem = titElem.find('>li[lay-id="'+ layid +'"]');
var tabElem = $('.layui-tab[lay-filter='+ filter +']');
var titElem = tabElem.children(TITLE);
var liElem = titElem.find('>li[lay-id="'+ layid +'"]');
call.tabDelete(null, liElem);
return this;
};
// 外部 Tab 切换
Element.prototype.tabChange = function(filter, layid){
var TITLE = '.layui-tab-title'
,tabElem = $('.layui-tab[lay-filter='+ filter +']')
,titElem = tabElem.children(TITLE)
,liElem = titElem.find('>li[lay-id="'+ layid +'"]');
call.tabClick.call(liElem[0], null, null, liElem);
var tabElem = $('.layui-tab[lay-filter='+ filter +']');
var titElem = tabElem.children(TITLE);
var liElem = titElem.find('>li[lay-id="'+ layid +'"]');
call.tabClick.call(liElem[0], {
liElem: liElem
});
return this;
};
@ -77,7 +80,10 @@ layui.define('jquery', function(exports){
options = options || {};
dom.on('click', options.headerElem, function(e){
var index = $(this).index();
call.tabClick.call(this, e, index, null, options);
call.tabClick.call(this, {
index: index,
options: options
});
});
};
@ -111,9 +117,10 @@ layui.define('jquery', function(exports){
// 基础事件体
var call = {
// Tab 点击
tabClick: function(e, index, liElem, options){
options = options || {};
var othis = liElem || $(this);
tabClick: function(obj){
obj = obj || {};
var options = obj.options || {};
var othis = obj.liElem || $(this);
var parents = options.headerElem
? othis.parent()
: othis.parents('.layui-tab').eq(0);
@ -126,9 +133,9 @@ layui.define('jquery', function(exports){
var filter = parents.attr('lay-filter');
// 下标
index = index === undefined
? othis.parent().children('li').index(othis)
: index;
var index = 'index' in obj
? obj.index
: othis.parent().children('li').index(othis);
// 执行切换
if(!(isJump || unselect)){
@ -137,21 +144,24 @@ layui.define('jquery', function(exports){
}
layui.event.call(this, MOD_NAME, 'tab('+ filter +')', {
elem: parents
,index: index
elem: parents,
index: index
});
}
// Tab 删除
,tabDelete: function(e, othis){
var li = othis || $(this).parent(), index = li.index()
,parents = li.parents('.layui-tab').eq(0)
,item = parents.children('.layui-tab-content').children('.layui-tab-item')
,filter = parents.attr('lay-filter');
var li = othis || $(this).parent();
var index = li.index();
var parents = li.parents('.layui-tab').eq(0);
var item = parents.children('.layui-tab-content>.layui-tab-item');
var filter = parents.attr('lay-filter');
if(li.hasClass(THIS)){
if (li.next()[0] && li.next().is('li')){
call.tabClick.call(li.next()[0], null, index + 1);
call.tabClick.call(li.next()[0], {
index: index + 1
});
} else if (li.prev()[0] && li.prev().is('li')){
call.tabClick.call(li.prev()[0], null, index - 1);
}
@ -164,8 +174,8 @@ layui.define('jquery', function(exports){
}, 50);
layui.event.call(this, MOD_NAME, 'tabDelete('+ filter +')', {
elem: parents
,index: index
elem: parents,
index: index
});
}
@ -512,14 +522,14 @@ layui.define('jquery', function(exports){
Element.prototype.render = Element.prototype.init;
var element = new Element(), dom = $(document);
var element = new Element();
var dom = $(document);
$(function(){
element.render();
});
var TITLE = '.layui-tab-title li';
dom.on('click', TITLE, call.tabClick); //Tab切换
dom.on('click', '.layui-tab-title li', call.tabClick); // Tab 切换
dom.on('click', call.hideTabMore); // 隐藏展开的 Tab
$(window).on('resize', call.tabAuto); // 自适应