Bootstrap 5 (beta) - 2021年更新
模态框的默认z-index已更改为1060。因此,要覆盖模态框和背景,请使用...
.modal:nth-of-type(even) {
z-index: 1062 !important;
}
.modal-backdrop.show:nth-of-type(even) {
z-index: 1061 !important;
}
Bootstrap 5多重模态框
Bootstrap 4 - 2019年更新
我发现大部分答案似乎都包含了很多不必要的jQuery代码。从另一个模态框中打开模态框可以简单地使用Bootstrap提供的事件(如show.bs.modal
)来完成。您可能还需要一些CSS来处理背景覆盖层。以下是三个“多重模态框”方案......
从另一个模态框中打开模态框(保持第一个模态框打开)
<a data-toggle="modal" href="#myModal" class="btn btn-primary">Launch modal</a>
<div class="modal" id="myModal">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title">Modal title</h4>
<button type="button" class="close" data-dismiss="modal">×</button>
</div><div class="container"></div>
<div class="modal-body">
...
<a data-toggle="modal" href="#myModal2" class="btn btn-primary">Open modal2</a>
</div>
<div class="modal-footer">
<a href="#" data-dismiss="modal" class="btn">Close</a>
</div>
</div>
</div>
</div>
<div class="modal" id="myModal2" data-backdrop="static">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title">2nd Modal title</h4>
<button type="button" class="close" data-dismiss="modal">×</button>
</div><div class="container"></div>
<div class="modal-body">
..
</div>
<div class="modal-footer">
<a href="#" data-dismiss="modal" class="btn">Close</a>
<a href="#" class="btn btn-primary">Save changes</a>
</div>
</div>
</div>
</div>
在这种情况下可能存在的问题是第二个模态框的背景会隐藏第一个模态框。为了防止这种情况发生,可以将第二个模态框的data-backdrop="static"
,并添加一些CSS来修复背景的z-index...
.modal:nth-of-type(even) {
z-index: 1052 !important;
}
.modal-backdrop.show:nth-of-type(even) {
z-index: 1051 !important;
}
从另一个模态框中打开模态框(关闭第一个模态框)
这与上面的情况类似,但由于在打开第二个模态框时关闭了第一个模态框,因此不需要背景CSS修复。一个简单的函数可以处理第二个模态框的show.bs.modal
事件以关闭第一个模态框。
https://codeply.com/go/NiFzSCukVl
$("#myModal2").on('show.bs.modal', function (e) {
$("#myModal1").modal("hide");
});
https://codeply.com/go/ejaUJ4YANz
在另一个模态框内打开模态框
最后一个多个模态框的场景是在第一个模态框内打开第二个模态框。在这种情况下,第二个模态框的标记放置在第一个模态框内。不需要额外的CSS或jQuery。
<div class="modal" id="myModal1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title">Modal title</h4>
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
</div>
<div class="container"></div>
<div class="modal-body">
...
<a data-toggle="modal" href="#myModal2" class="btn btn-primary">Launch modal 2</a>
</div>
<div class="modal-footer">
<a href="#" data-dismiss="modal" class="btn">Close</a>
</div>
</div>
</div>
<div class="modal" id="myModal2">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title">2nd Modal title</h4>
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
</div>
<div class="container"></div>
<div class="modal-body">
...
</div>
<div class="modal-footer">
<a href="#" data-dismiss="modal" class="btn">Close</a>
<a href="#" class="btn btn-primary">Save changes</a>
</div>
</div>
</div>
</div>
</div>
https://codeply.com/go/iSbjqubiyn