twitter-bootstrap - 模态中的模态 - 如何仅关闭内部模态

标签 twitter-bootstrap bootstrap-modal

我有一个正常工作的modal显示 unordered list .此元素之一 list包含一个打开内部 modal 的按钮(它又包含一个视频播放器)。这一切都很好,但是当我解雇内部 modal , 两个 modals (初始和内部)关闭。下面的代码显示了我为内部 modal 所做的事情:

<tr><td>List Item <button class="btn btn-success" data-toggle="modal" data-target="#myInnerModal1"></button>
        <div class="modal" id="myInnerModal1">
            <div class="modal-dialogue">
                <div class="modal-content">
                    <div class="modal-header">
                        <button class="close" data-dismiss="modal">&times;</button>
                        <h4 class="modal-title">Title</h4>
                    </div>
                <div class="modal-body">
                    <video class="myVideo" id="preview1" controls>
                        <source src="video.m4v" type="video/mp4">
                    </video>
                </div>
                <div class="modal-footer">
                    <button class="btn btn-default" data-dismiss="modal">Close</button>
                </div>
            </div>
        </div>
</td></tr>

我想找到一种在 dismiss-modal 中指定的方法class其中modal关闭(在这种情况下,它将是 myInnerModal1 )。

最佳答案

您不需要任何额外或附加功能来解决问题。关闭内部模态时两个模态都关闭的原因是因为您将模态放在模态内部,并且两个模态都具有相同的关闭按钮data-dismiss="modal"所以点击内部模式关闭按钮也会触发data-dismiss="modal"也是初始模态的。

Fiddle

简单的解决方案是将内部模态调用按钮保留在初始模态中,但从初始模态中删除内部模态 HTML 并将其放在外部,它将解决问题

Fiddle working example

原因

Bootstrap 不支持 stacked/simultaneous/overlapping modals ;

Overlapping modals not supported

确保在另一个仍然可见时不要打开一个模态。一次显示多个模式需要自定义代码。

模态中的替代解决方案模态

因此,如果您仍想将内部模态 HTML 保留在初始模态中,那么以下代码将完成这项工作并解决问题

在内部模态 HTML 关闭按钮更改 data-dismiss="modal"data-dismiss-modal="modal2"

<button class="btn btn-default" data-dismiss-modal="modal2">Close</button>

并添加以下代码
$("button[data-dismiss-modal=modal2]").click(function(){
    $('#myInnerModal1').modal('hide');
});

它只会关闭内部模态并保持初始模态打开。

$("button[data-dismiss-modal=modal2]").click(function () {
    $('#myInnerModal1').modal('hide');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" />
<button type="button" class="btn btn-info" data-toggle="modal" data-target="#myModal">Open Modal</button>
<!-- Modal -->
<div id="myModal" class="modal fade" role="dialog">
    <div class="modal-dialog">
        <!-- Modal content-->
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal">&times;</button>
                 <h4 class="modal-title">Modal Header</h4>

            </div>
            <div class="modal-body">
                <tr>
                    <td>List Item
                        <button class="btn btn-success" data-toggle="modal" data-target="#myInnerModal1"></button>
                        <div class="modal" id="myInnerModal1">
                            <div class="modal-dialogue">
                                <div class="modal-content">
                                    <div class="modal-header">
                                        <button class="close" data-dismiss="modal">&times;</button>
                                         <h4 class="modal-title">Title</h4>

                                    </div>
                                    <div class="modal-body">
                                        <video class="myVideo" id="preview1" controls>
                                            <source src="video.m4v" type="video/mp4">
                                        </video>
                                    </div>
                                    <div class="modal-footer">
                                        <button class="btn btn-default" data-dismiss-modal="modal2">Close</button>
                                    </div>
                                </div>
                            </div>
                    </td>
                </tr>
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
                </div>
            </div>
        </div>
    </div>

关于twitter-bootstrap - 模态中的模态 - 如何仅关闭内部模态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33156786/

相关文章:

javascript - 将 html bootstrap 转换为 react.js jsx 样式后更改 css 样式

javascript - Google 图表在 Bootstrap 模态中显示时显示对齐错误

bootstrap-modal - 如何在bootstrap模态框中使用bootstrap确认?

javascript - 使用 AJAX 和 PHP 通过模态登录

javascript - 单击饼图切片时,Bootstrap 模式不显示

ajax - MVC 4 : Return partial view inside of bootstrap modal upon failed validation

html - 浏览器问题在 Bootstrap 面板中将小部件(不是文本)居中

jquery - 使用 Flask/BootStrap/jquery 通过帖子提交文本框时重定向到特定选项卡

jquery - Bootstrap 底部可滚动导航栏

css - 如何覆盖 BootStrap CSS 复选框和输入复选框