本文摘自: bootstrap 多层modal关闭后的滚动问题

问题

自己写的后台管理中有双层遮罩的功能,在最外层的遮罩关闭后,因为最底层的超过页面高度,所以需要滚轴控制.但是外层关闭后滚轴直接滚动的是页面而不是遮罩层.

解决方法

网上查资料看到蓝阳这位小哥的blog,试了一下果然可以.

参考原文

$('.notLastModal').on('hidden.bs.modal', function(){  
  $(document.body).addClass('modal-open');  
});

bootstrap中如果在模态框弹出模态框,即多重模态框,那么在关闭模态框后,上一级的模态框无法滚动,而且滚动事件会穿透到body层。

原理是只要有modal被打开,body会被赋予modal-open这个类,使其overflow变为hidden,无法滚动;

而只要有modal被关闭,body的modal-open这个类就会被remove掉。

所以解决方法如上代码,非最外的一层modal监听隐藏事件,为body重新添加modal-open类