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