【发布时间】:2014-03-30 03:39:18
【问题描述】:
我在执行 AJAX 调用时显示一个用于加载的 Bootstrap 模式窗口。当加载模式应该显示时,我广播一个“progress.init”事件,当我希望模式隐藏时广播一个“progress.finish”。在某些情况下,模态显示后会很快隐藏,导致模态背景保留在屏幕上。隐藏元素的后续调用不会删除背景。我也不能简单地删除所有背景,因为其他模式窗口可能会显示在加载窗口上。我已经整理了一个jsfiddle 来展示简单调用模态函数(而不是触发事件)的问题。
var loadingModal = $("#loadingModal");
$("#btnShow").click(function () {
loadingModal.modal("show");
//hide after 3 seconds
setTimeout(function () {
loadingModal.modal("hide");
}, 3000);
});
$("#btnProblem").click(function () {
//simulate a loading screen finishing fast, followed by another loading screen
loadingModal.modal("show");
loadingModal.modal("hide");
loadingModal.modal("show");
//Again simulate 3 seconds
setTimeout(function () {
loadingModal.modal("hide");
}, 3000);
});
还有 HTML:
<div id="loadingModal" class="modal fade">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-body">
<p>Loading...</p>
</div>
</div>
</div>
</div>
<button id="btnShow">Show Loading</button>
<button id="btnProblem">Cause show/hide problem</button>
理想情况下,我希望在调用 modal("hide") 之前无需等待指定时间即可解决此问题。换句话说,我想尽量避免这样的事情:
elem.on("progress.finish", function () {
window.setTimeout(loadingModal.modal("hide");
}, 750);
我还尝试从 bootstrap 订阅 hidden.bs.modal 和 shown.bs.modal 事件以尝试显示/隐藏元素(如果需要),但可能会出现此错误...任何想法允许此模式显示/隐藏?
【问题讨论】:
-
我不确定这个stackoverflow.com/questions/11519660/… 是否是同一个问题。但是您的答案对我有用,并且似乎比任何这些答案都容易
标签: javascript twitter-bootstrap-3