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