第二模态仅限于第一模态区域



使用bootstrap 3.3.5并尝试打开第二个模态,发现了一个奇怪的行为:

  1. 背景不显示在第二模态周围,而是覆盖第一个模态的背景
  2. 第二个模态是仅限于第一模态的区域

查看示例:http://jsfiddle.net/2zqe93u1/show/

寻找一种展示第二模态的方式,背景围绕着它,没有第一模态限制的区域。

代码:

<div class="modal bs-modal-lg" id="FirstModal" data-backdrop="static" data-keyboard="false" tabindex="-1" role="dialog" aria-labelledby="FiltroLabel" aria-hidden="true">
    <div class="modal-dialog modal-lg">
        <div class="modal-content">
            <div class="modal-header">
                <span class="modal-title">Title #1</span>
            </div>
            <div class="modal-body">
                <div class="modal" id="SecondModal" tabindex="-1" role="dialog" aria-hidden="true">
                    <div class="modal-dialog">
                        <div class="modal-content">
                            <div class="modal-header">
                                <h4 class="modal-title">Title #2</h4>
                            </div>
                            <div class="modal-body">
                                <p>Second Modal</p>
                                <p>Second Modal</p>
                                <p>Second Modal</p>
                                <p>Second Modal</p>
                                <p>Second Modal</p>
                                <p>Second Modal</p>
                            </div>
                            <div class="modal-footer">
                                <button class="btn btn-default" data-number="2">Close</button>
                            </div>
                        </div>
                    </div>
                </div>
            <a data-toggle="modal" href="#SecondModal" class="btn btn-primary btn-block">Open the second modal</a>
            </div>
            <div class="modal-footer">
                <a data-loading-text="Wait" class="btn btn-default">Cancel</a>
            </div>
        </div>
    </div>
</div>

如前所述@Tim Lewis bootstrap不支持堆叠模态,一次显示多个模态需要自定义代码

首先删除第一模态中的第二模态HTML,并将其放在外部,这样HTML就会;

<div class="modal bs-modal-lg" id="FirstModal" data-backdrop="static" data-keyboard="false" tabindex="-1" role="dialog" aria-labelledby="FiltroLabel" aria-hidden="true">
    <div class="modal-dialog modal-lg">
        <div class="modal-content">
            <div class="modal-header">
               <span class="modal-title">Title #1</span>
            </div>
            <div class="modal-body">
                <a data-toggle="modal" href="#SecondModal" class="btn btn-primary btn-block">Open the second modal</a>
            </div>
            <div class="modal-footer">
                <a data-loading-text="Wait" class="btn btn-default">Cancel</a>
            </div>
        </div>
    </div>
</div>
<div class="modal" id="SecondModal" tabindex="-1" role="dialog" aria-hidden="true">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                    <h4 class="modal-title">Title #2</h4>
            </div>
            <div class="modal-body">
                <p>Second Modal</p>
                <p>Second Modal</p>
                <p>Second Modal</p>
                <p>Second Modal</p>
                <p>Second Modal</p>
                <p>Second Modal</p>
            </div>
            <div class="modal-footer">
                <button class="btn btn-default" data-number="2">Close</button>
            </div>
        </div>
    </div>
</div>

它将解决第二个模态被限制在第一个模态的区域内的问题

现在为了解决这个问题背景不显示在第二个模态周围,而不是覆盖第一个模态的背景

在JS 中添加以下代码

$(document).ready(function () {
    $('#SecondModal').on('show.bs.modal', function () {
        $('#FirstModal').css('z-index', 1039);
    });
    $('#SecondModal').on('hidden.bs.modal', function () {
        $('#FirstModal').css('z-index', 1041);
    });
});

Fiddle

为了实现这一目标,您必须使用分离的两个模态。

我可以用这个做的第一点https://jsfiddle.net/2zqe93u1/

$('#FirstModal').modal('show');
$('#SecondModal').on('shown.bs.modal', function (e) {
$('.modal-backdrop').first().appendTo($(this).parent())
})
$('#SecondModal').on('hidden.bs.modal', function (e) {
$('.modal-backdrop').first().remove()
})
$("button[data-number=2]").click(function(){
$('#SecondModal').modal('hide');
});

但我不明白第二个,如果第二个模态可以从第一个模态中拖出来,为什么背景必须在第一个模态上?但随着事件的发生,我相信你可以做到这一点。看看jsfiddle,了解

的想法

最新更新