Twitter Bootstrap模态窗口闪烁

时间:2011-10-23 04:10:39

标签: jquery modal-dialog twitter-bootstrap

我想使用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;
        });
    });

直接从bootstrap js页面复制HTML

<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秒左右然后消失。如果我将“切换”更改为“显示”,则在第二次单击后,背景将不会完全淡出。我该怎么调试呢?

4 个答案:

答案 0 :(得分:2)

您当前正在执行操作的方式可能是导致闪烁的原因。基本上,您告诉浏览器的是:在显示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;
    });
});

答案 1 :(得分:0)

<ul>中的模态解决方案|| <ol>

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

答案 2 :(得分:0)

*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;
  });

答案 3 :(得分:0)

之所以会这样,是因为.list-gorup-item:hover的z-index:1导致了新的堆叠上下文。您可以使用z-index:1

来解决
.list-group-item, .list-group-item:hover{ z-index: 1 }