Twitter Bootstrap 模态窗口闪烁

Posted

技术标签:

【中文标题】Twitter Bootstrap 模态窗口闪烁【英文标题】:Twitter Bootstrap modal window flickers 【发布时间】:2011-12-13 10:31:57 【问题描述】:

我想使用 Ajax 在模态窗口内插入一些东西,所以我尝试手动打开模态窗口。代码是这样的

    $(function()
        $('#modal-from-dom').modal(
            backdrop: true,
            keyboard: true
        );
        $('#modalbutton').click(function()

            $('#my-modal').bind('show', function () 
                // do sth with the modal
            );
            $('#modal-from-dom').modal('toggle');

            return false;
        );
    );

html 直接从 bootstrap js 页面复制

<div id="modal-from-dom" class="modal hide fade">
    <div class="modal-header">
      <a href="#" class="close">×</a>
      <h3>Modal Heading</h3>
    </div>
    <div class="modal-body">
      <p>One fine body…</p>
    </div>
    <div class="modal-footer">
      <a href="#" class="btn primary">Primary</a>
      <a href="#" class="btn secondary">Secondary</a>
    </div>
</div>
<button id="modalbutton" class="btn">Launch Modal</button>

所以问题是第一次单击按钮似乎工作正常,第二次单击后模态窗口显示 1 秒左右然后消失。如果我将“切换”更改为“显示”,第二次单击后背景不会完全消失。我该如何调试?

【问题讨论】:

.modal() 是某种插件吗? #my-modal 是什么,你在用它做什么?可能的问题是您在每次点击时都绑定了show 事件,它会做一些事情来搞砸您的切换。 此问题已结束。我已经更新了问题中的代码。 请发布您的解决方案。 另一个解决方案是在不需要时禁用背景 (data-backdrop="false"): &lt;div class="modal fade" data-backdrop="false"…&gt;;见***.com/a/36087387/2784517 【参考方案1】:

您当前执行操作的方式可能是导致闪烁的原因。本质上,您告诉浏览器的是:在显示 div 后更新内容。您还告诉 jQuery 每次单击链接时都绑定 onShow 事件。该绑定声明应在 onClick 事件之外进行。

您应该尝试的是在显示之前更改模态内容,允许浏览器在显示之前适当调整 DOM,减少(如果不消除)闪烁。

试试这样的:

$(function()
    $('#modal-from-dom').modal(
        backdrop: true,
        keyboard: true
    );
    $('#modalbutton').click(function()

        // do what you need to with the modal content here

        // then show it after the changes have been made

        $('#modal-from-dom').modal('toggle');
        return false;
    );
);

【讨论】:

您好,您的回答对我帮助很大。问题是,当我想关闭弹出窗口时,它不会重新切换 - 而是立即消失并且不顺利。你能帮我解决这个问题吗?【参考方案2】:

&lt;ul&gt; 中的模态解决方案@ || &lt;ol&gt;

在我的情况下,我在悬停时有一个口吃/闪烁/讨人喜欢的模态。解决方案是:不要将模态框放在使用 z-index 的元素内,例如,或者,将模态框的代码放在外面,如下所述:https://github.com/twbs/bootstrap/issues/25206

【讨论】:

这是更好的 imo 方式。【参考方案3】:
*if you get error like ... modal is not a function  so u can do like this also *

$("#open-modal").click(function () 
    // outhum credit
    $("#modal-from-dom").show();
    $(".modal").css("background", "#333333ab");
    return false;
  );

【讨论】:

【参考方案4】:

发生这种情况是因为 .list-gorup-item:hover 的 z-index: 1 会导致新的堆叠上下文。您可以使用 z-index:1 解决

.list-group-item, .list-group-item:hover z-index: 1 

【讨论】:

以上是关于Twitter Bootstrap 模态窗口闪烁的主要内容,如果未能解决你的问题,请参考以下文章

Twitter Bootstrap:打印模态窗口的内容

如何在 Twitter Bootstrap AngularJS 模态窗口中以 100% 宽度显示 Flot 图表

如何在模态 Twitter Bootstrap 中使用 ajax 插入记录

禁止关闭 Twitter Bootstrap 模式窗口

如何通过单击外部来关闭 Twitter Bootstrap 弹出窗口?

Twitter Bootstrap 工具提示:鼠标按下时闪烁