parent.layui.admin.events.closeThisTabs()
这个方法解理的误区,的确是可以关闭当前页面,但实际上这个的作用是关闭当前被激活的页面,所为激活就是......,tabs 导航里的 tab 是选中状态,页面也是对应的 tab 内容。
这样的话就说明并不是真正关闭当前页面,比如有个场景:
index.html 是父页面,a,b,c 是子 tabs 标签页,当在 b 中(激活的)动态执行这行语句是可以关闭 b 页面的,但是有一个问题,如果 b 页面执行了一个延时操作(比如 3 秒钟)后再动态关闭当前页面(b),如果还没有到 3 秒,这时点击激活了 a 页面(切换 tab),当 3 秒过去后关闭的并不是 b 而是 a 页面,这时候就会感觉莫名其妙,所以 parent.layui.admin.events.closeThisTabs() 语义并不准确,应该是 parent.layui.admin.events.closeCurrentActiveTabs(),之类的...
解决方法:
var fileName = window.location.href.match(/.*\/(.*\.*)/i)[1];
$.each(parent.layui.$('#LAY_app_tabsheader>li'), function(index, li) {
var $li = $(li);
if ($li.attr('lay-id').indexOf(fileName) > -1) {
$li.find('.layui-tab-close').trigger('click');
return
}
})
这个可以自己封成函数或者方法来执行,这时不管在当前激活的是哪个页面,关闭的都是动态执行关闭命令的页面。