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); + } };