Bootstrap中双重模态框显示解决方案

问题:在调用bootstrap的模态框后,触发模态框上的一个事件,再在本模态框上再跳出一个模态框。

方法:

个人开发中遇到的多重模态框的问题,bootstrap原则上不推荐使用这种多重覆盖的方法,查询许久之后,记录一下

注意:第二个模态框的div在html代码上一定要在第一个模态框的div之后

方案一:

在多重模态框的的当前页面加上两个代码片段

$(document).on('show.bs.modal', '.modal', function(event) {
        $(this).appendTo($('body'));
    }).on('shown.bs.modal', '.modal.in', function(event) {
        setModalsAndBackdropsOrder();
    }).on('hidden.bs.modal', '.modal', function(event) {
        setModalsAndBackdropsOrder();
    });

function setModalsAndBackdropsOrder() {  
        var modalZIndex = 1040;
        $('.modal.in').each(function(index) {
            var $modal = $(this);
            modalZIndex++;
            $modal.css('zIndex', modalZIndex);
            $modal.next('.modal-backdrop.in').addClass('hidden').css('zIndex', modalZIndex - 1);
        });
        $('.modal.in:visible:last').focus().next('.modal-backdrop.in').removeClass('hidden');
    }

亲测有效,但是有个问题,第二个模态框打开会有卡顿一下再显示在第一个模态框之上

 

方法二:

修改bootstrap.js文件,不是bootstrap.min.js文件,我在bootstrap.min.js文件里没有找到下方的代码,将下面的代码块加在这个文件中第二段代码之前就行了

​
var modalLen = $(".modal-backdrop").length,

zIndex = $(".modal-backdrop").eq(0).css("z-index");

for(var i = 1; i < modalLen; i ++){

$(".modal-backdrop").eq(i).css({

"z-index": zIndex + i * 10 + 1

});

$(".modal.in").eq(i).css({

"z-index": zIndex + (i + 1) * 10 + 1

});

}


//这一段代码加在上方这一段代码上测
var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })

​

亲测有效,这个方法没有第一个方法那种卡顿的现象,但是修改源文件总是觉得不大好,可没有找到其他方法.....

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 Bootstrap 创建模态框,可以按照以下步骤进行: 1. 在 HTML 文件添加一个按钮,用于打开模态框: ```html <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#myModal"> 打开模态框 </button> ``` 2. 创建模态框HTML 结构,将其放在页面的任意位置: ```html <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel"> <div class="modal-dialog" role="document"> <div class="modal-content"> <!-- 模态框的头部 --> <div class="modal-header"> <h4 class="modal-title" id="myModalLabel">模态框标题</h4> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true">×</span> </button> </div> <!-- 模态框的主体内容 --> <div class="modal-body"> 模态框的内容在这里... </div> <!-- 模态框的底部 --> <div class="modal-footer"> <button type="button" class="btn btn-secondary" data-dismiss="modal">关闭</button> <button type="button" class="btn btn-primary">保存</button> </div> </div> </div> </div> ``` 3. 添加 JavaScript 代码,以便在点击按钮时打开模态框: ```html <!-- 引入 jQuery 库 --> <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script> <!-- 引入 Bootstrap 库 --> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta3/dist/js/bootstrap.bundle.min.js"></script> ``` 现在,当你点击按钮时,就会打开一个模态框。你可以在模态框的主体部分添加自己的内容,也可以在底部添加按钮来进行操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值