我有一个bootstrap模态1,它在点击时打开模态2。我通过点击模态1来关闭模态2.模态1然后应该通过点击X来关闭它,它会使主页面处于黑暗状态,我必须刷新以清除它,这不好!我一直试图弄清楚这几个小时,但无法得到它。任何人都知道什么是错的以及如何解决它?我对JS或bootstrap不是很有经验。我从两个不同的来源获得此代码,我正在尝试使它一起工作。 代码如下......谢谢!
<div class="portfolio-modal modal fade" id="portfolioModal1" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-content">
<div class="close-modal" data-dismiss="modal">
<div class="lr">
<div class="rl"></div>
</div>
</div>
<div class="container" id="portfolioModal1">
<div class="gallery" id="myModalD">
<!-- Project Details Go Here -->
<ul>
<li class="col-lg-2 col-md-2 col-sm-3 col-xs-4">
<img src="img/portfolio/campos/resized/sh21.jpg" class="img-responsive">
</li>
</ul>
</div>
<!--gallery1 end-->
</div>
<div class="modal fade" id="myModalD" tabindex="-1" role="dialog" aria- labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-body"></div>
</div>
<!-- /.modal-content -->
</div>
<!-- /.modal-dialog -->
</div>
<!-- /.modal -->
</div>
</div>
<!--container end-->
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria- labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-body"></div>
</div>
<!-- /.modal-content -->
</div>
<!-- /.modal-dialog -->
</div>
<!-- /.modal -->
</div>
</div>
<button type="button" class="btn btn-primary" data-dismiss="modal"> <i class="fa fa-times"></i> Close Project</button>
</div>
</div>
</div>
</div>
</div>
</div>
Gallery JS
<!--custom 2nd modal-->
<script type="text/javascript">
$(document).ready(function () {
$('li img').on('click', function () {
var src = $(this).attr('src');
var img = '<img src="' + src + '" class="img-responsive"/>';
$('#myModalD').modal();
$('#myModalD').on('shown.bs.modal', function () {
$('#myModalD .modal-body').html(img);
});
$('#myModalD').on('hidden.bs.modal', function () {
$('#myModalD .modal-body').html('');
});
});
})
</script>
答案 0 :(得分:3)
问题不在于模式,你重复了两个id's
,导致问题的原因是你在HTML中重复模态id's
,Id's
必须是 UNIQUE 完整的文档。
第一模态id="portfolioModal1"
<div class="portfolio-modal modal fade" id="portfolioModal1" tabindex="-1" role="dialog" aria-hidden="true">
并在模态HTML中再次重复第一个模态id="portfolioModal1"
<div class="container" id="portfolioModal1">
然后在上面的HTML代码之后,您再次重复id="myModalD"
<div class="gallery" id="myModalD">
基本上是第二模态id
id="myModalD"
<div class="modal fade" id="myModalD" tabindex="-1" role="dialog" aria- labelledby="myModalLabel" aria-hidden="true">
当模态关闭时,导致id's
的重复模态modal-backdrop
不会消失。
删除这两个不必要的id's
id="portfolioModal1"
的 <div class="container" id="portfolioModal1">
和
来自id="myModalD"
的 <div class="gallery" id="myModalD">
和模态工作正常,在关闭模态时,背景将消失。
在JS代码中;
如果您想手动打开modal,那么
$('#myModalD').modal('show');
不仅仅是$('#myModalD').modal()
,毫无疑问它会起作用,但并非所有浏览器都是宽容或无视的。
你可以像这样添加modal event listener,这是更好的做法。
$('#myModalD').modal('show').on('shown.bs.modal', function () {
$('#myModalD .modal-body').html(img);
});
代替
$('#myModalD').modal("show");
$('#myModalD').on('shown.bs.modal', function () {
$('#myModalD .modal-body').html(img);
});
工作示例
$(document).ready(function () {
$('li img').on('click', function () {
var src = $(this).attr('src');
var img = '<img src="' + src + '" class="img-responsive"/>';
$('#myModalD').modal("show").on('shown.bs.modal', function () {
$('#myModalD .modal-body').html(img);
});
$('#myModalD').on('hidden.bs.modal', function () {
$('#myModalD .modal-body').html('');
});
});
});
<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="#portfolioModal1">Open Modal</button>
<div class="portfolio-modal modal fade" id="portfolioModal1" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-content">
<div class="close-modal" data-dismiss="modal">
<div class="lr">
<div class="rl"></div>
</div>
</div>
<div class="container">
<div class="gallery">
<!-- Project Details Go Here -->
<ul>
<li class="col-lg-2 col-md-2 col-sm-3 col-xs-4">
<img src="http://tympanus.net/Tutorials/CaptionHoverEffects/images/1.png" class="img-responsive">
</li>
</ul>
</div>
<!--gallery1 end-->
</div>
<div class="modal fade" id="myModalD" tabindex="-1" role="dialog" aria- labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-body"></div>
</div>
<!-- /.modal-content -->
</div>
<!-- /.modal-dialog -->
</div>
<!-- /.modal -->
</div>
</div>
<!--container end-->
答案 1 :(得分:0)
我也面临着同样的问题,Bootstrap模式框无法正确关闭。 问题出在模态框的“淡入淡出”动画中。
在
<div class="portfolio-modal modal fade" id="portfolioModal1" tabindex="-1" role="dialog" aria-hidden="true">
从模态类中删除淡入
答案 2 :(得分:0)
尝试在 bs
中包含 "data-bs-dismiss"
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">No</button>
<button type="submit" name="deletedata" class="btn btn-primary">Yes, Delete</button>
</div>
在此处查看详细信息:https://getbootstrap.com/docs/5.0/components/modal/