首先,我使用以下代码打开我的模态框:
$('#myModal').modal('show');
然后,在另一种情况下,我需要在按ESC键或在外部点击时不关闭同一个模态窗口,因此我使用以下代码:
$('#myModal').modal({
backdrop: 'static',
keyboard: false
})
但是一旦我通过第一种方法打开了我的模态框,第二种方法就不起作用了。有什么提示吗?
我该如何强制 backdrop
值的切换工作?
首先,我使用以下代码打开我的模态框:
$('#myModal').modal('show');
然后,在另一种情况下,我需要在按ESC键或在外部点击时不关闭同一个模态窗口,因此我使用以下代码:
$('#myModal').modal({
backdrop: 'static',
keyboard: false
})
但是一旦我通过第一种方法打开了我的模态框,第二种方法就不起作用了。有什么提示吗?
我该如何强制 backdrop
值的切换工作?
我找到了一个解决这个问题的方法。
一旦模态框被隐藏,bootstrap数据仍然留在上面。为了防止这种情况,我采取了以下措施:
$('#myModal').modal('show'); //display something
//...
// if you don't want to lose the reference to previous backdrop
$('#myModal').modal('hide');
$('#myModal').data('bs.modal',null); // this clears the BS modal data
//...
// now works as you would expect
$('#myModal').modal({backdrop:'static', keyboard:false});
我在使用Bootstrap 4.1.1时也遇到了同样的问题,只有当我将数据属性添加到HTML中才能使其正常工作。
<div class="modal fade show" id="myModal" tabindex="-1" role="dialog"
style="display: block;" data-keyboard="false" data-backdrop="static">
...
类似 Daniele Piccioni,但更加简洁:
$('#myModal').modal({backdrop: true, keyboard: false, show: true});
$('#myModal').data('bs.modal').options.backdrop = 'static';
这是针对 Bootstrap 3.+
的。
有两种处理方式:
1) 直接将数据属性添加到 HTML 中 -
<div class="modal fade show" id="myModal" tabindex="-1" role="dialog"
style="display: block;" data-keyboard="false" data-backdrop="static">
2)你可以使用jQuery(适用于Bootstrap V4)-
$("#myModal").data('bs.modal')._config.backdrop = 'static';
$('#myModal').data('bs.modal').options.backdrop = 'static';
data-bs-backdrop="static"
HTML 属性,这是因为Bootstrap会在HTML标记上为其直接属性添加bs
。$("#myModal").data('bs.modal')._config.backdrop = 'static';
也就是说,在 v3
和 v4
之间,他们似乎已经将 bs.modal
数据对象的 options
属性更改为 _config
。[config]="{backdrop: 'static', keyboard: false}"
<div bsModal #dangerModal="bs-modal" [config]="{backdrop: 'static', keyboard: false}" class="modal fade" tabindex="-1"
role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
在HTML中添加了data属性。它适用于Bootstrap 4、Bootstrap 3。
<div class="modal fade" tabindex="-1" role="dialog" aria-hidden="true" *data-keyboard="false" data-backdrop="static"*>
<div class="modal-dialog modal-lg" role="document"><div class="modal-content"></div></div>
</div>
在jQuery中
$('div.modal').modal({
backdrop: 'static',
keyboard: false,
show: false
});