我正在使用Twitter引导模态对话框。当我点击引导模式对话框的提交按钮时,它会发送一个AJAX请求。我的问题是情态背景并没有消失。模态对话框确实消失了,但是“模态背景”在屏幕上创建的不透明度仍然存在

我该怎么办?


当前回答

有些情况下,其他答案(有帮助的和有效的)不能很容易地应用。那么,一个可能的解决方案是实现一个事件,在模态对话框消失后不久触发对模态背景的单击。

下面是一个基于以下模态对话框的例子:

<div class="modal fade ..." id="IdOfMyModal" tabindex="-1" role="dialog" aria-labelledby="" aria-hidden="true">
...
</div>

要在点击模态时删除“modal- background in”(在屏幕上创建背景不透明),添加以下代码:

$('#IdOfMyModal').on("click", function() {
    setTimeout(function() {
        if ($('#IdOfMyModal').css("opacity") != "1")
            $('.modal-backdrop').trigger('click');
    }, 100);
});

其他回答

use:

$('.modal.in').modal('hide') 

我只是在这个问题上花了太多时间:)

虽然提供的其他答案是有帮助的和有效的,但对我来说,从Bootstrap有效地重新创建模态隐藏功能似乎有点混乱,所以我找到了一个更干净的解决方案。

问题是,当你打电话时,会发生一连串的事件

$("#myModal").modal('hide');
functionThatEndsUpDestroyingTheDOM()

然后,当您替换AJAX请求的结果一堆HTML时,模式隐藏事件不会结束。然而,Bootstrap在一切完成时触发一个事件,你可以像这样钩入:

$("#myModal").modal('hide').on('hidden.bs.modal', functionThatEndsUpDestroyingTheDOM);

希望这对你有帮助!

从https://github.com/twbs/bootstrap/issues/19385

Modal的显示/隐藏方法是异步的。因此,代码如下: foo.modal(“隐藏”);bar.modal(“秀”);是无效的。你需要等待 实际完成的显示/隐藏(通过侦听 显示/隐藏事件;看到 http://getbootstrap.com/javascript/#modals-events) 再次显示或隐藏方法。

我有这个问题时,我打开相同的模式两次太快,所以一个简单的解决方法是检查它是否已经显示,然后不显示它再次:

$('#modalTitle').text(...);
$('#modalMessage').text(...);
if($('#messageModal').is(':hidden')){
    $('#messageModal').modal('show');
}

这行代码在许多搜索后解决了我的问题,我想关闭ajax成功的模式:

$('#exampleModal').modal('hide');
$("[data-dismiss=modal]").trigger({ type: "click" });

非常感谢,曼纽尔·费尔南多 https://stackoverflow.com/a/27218322/5935763

数据背景属性的初始值可以是

“静态”、“真”、“假”。

Static和true添加模态阴影,而false禁用阴影,所以你只需要在第一次点击时将这个值更改为false。是这样的:

$(文档)。(“准备好”,函数(){ var计算= 0; $ (' # id-which-triggers-modal ')。(“点击”,函数(){ 如果(数> 0){ (美元).attr(“data-backdrop”,“假”) } 数+ +; }); });