From cecf33a83d1846b9632d0981e7f61e9232f2711b Mon Sep 17 00:00:00 2001 From: morning-star <26325820+Sight-wcg@users.noreply.github.com> Date: Wed, 28 Feb 2024 08:46:16 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E4=BC=98=E5=8C=96=20layer.closeLas?= =?UTF-8?q?t=20(#1652)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * refactor: 重构 layer.closeLast feat: 不指定 type 时, 将从所有类型的层中寻找最近打开的 fix: 捕获层关闭顺序错误 * feat(layer): layer.closeLast 的 type 参数支持数组 * fix: hideOnClose 隐藏时不应收集索引 --- docs/layer/index.md | 1 + src/modules/layer.js | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/docs/layer/index.md b/docs/layer/index.md index af48df6d..47c73f1a 100644 --- a/docs/layer/index.md +++ b/docs/layer/index.md @@ -398,6 +398,7 @@ layer.closeLast('page'); // 关闭最近一次打开的页面层 layer.closeLast('iframe'); // 关闭最近一次打开的 iframe 层 layer.closeLast('loading'); // 关闭最近一次打开的加载层 layer.closeLast('tips'); // 关闭最近一次打开的 tips 层 +layer.closeLast(['dialog', 'page']); // 关闭最近一次打开的信息框或页面层,2.9.7+ ```

全局配置默认属性

diff --git a/src/modules/layer.js b/src/modules/layer.js index 7378f048..9fd21595 100644 --- a/src/modules/layer.js +++ b/src/modules/layer.js @@ -1321,8 +1321,18 @@ layer.closeAll = function(type, callback){ // 根据弹层类型关闭最近打开的层 layer.closeLast = function(type, callback){ - type = type || 'page'; - layer.close($('.layui-layer-'+ type +':last').attr("times"), callback); + var layerIndexList = []; + var isArrayType = $.isArray(type); + $(typeof type === 'string' ? '.layui-layer-' + type : '.layui-layer').each(function(i, el){ + var layero = $(el); + var shouldSkip = (isArrayType && type.indexOf(layero.attr('type')) === -1) || layero.css('display') === 'none'; + if(shouldSkip) return true; + layerIndexList.push(Number(layero.attr('times'))); + }); + if(layerIndexList.length > 0){ + var layerIndexMax = Math.max.apply(null, layerIndexList); + layer.close(layerIndexMax, callback); + } };