bootstrap使用Modal,关闭弹框遗留遮罩层

前两天,用公司封装的框架,写了一个弹框,两个弹框操作相隔时间很短,第二个弹框出现遮罩层。

// 手动清除

$(".modal-backdrop").remove();

发现弹框关闭后滚动条不好使。然后f12查看,发现modal-open未关闭,之后再执行

$("body").removeClass('modal-open');

问题就可以解决了。

不过,这种方法虽然简单,但是总觉得有点土。

下面,说一下第二种方法,给第二个弹框加一个延迟:

$("#modal").modal("hide");

setTimeout(function(){//延时加载页面
      show();// modal关闭后,要展示的页面
},500);

后来询问前端的同事才知道,js虽然单线程往下执行,但当遇到样式渲染、dom操作时,就有同步异步的问题,也就是说,当$("#modal").modal("hide");执行完,但有可能modal('hide')里面的样式操作,dom操作还没有渲染完,showRation()方法就把页面刷新了或者加入了新的html,页面重新渲染,而modal可能还没有执行完样式删除,modal有样式残余,就出现了这个问题。

你可能感兴趣的:(jquery)