第二个模态是从第一个模态中的按钮调用的。当第二个模型打开和关闭时,第一个模型变为非活动状态。我甚至不能移动模态
本文将介绍如何实现这一点。
使用
hidden.bs.modal
和shown.bs.modal
事件回调,我们可以记录一次打开的情态动词的数量。假设这些是情态动词而不是对话框,一次只能激活一个情态动词。的休息应该被禁用。我在body标签上创建了一个计数器,因为没有更好的地方。每一个当显示模态时,我增加计数器,然后减少它当模态关闭时。
使用这个计数器,我可以快速计算模态的z-index它对应的背景比其他的都高页面上的模式和背景。这就满足了"禁用一切"的要求其他的要求。
设置模态的z-index是没有问题的,但是找到对应的背景div需要搜索带有class的标签
.modal-backdrop
。为了确保我只在最近的一个,我设置了z索引,还添加了一个.fv-modal-stack
对吧。然后,当后续情态动词打开时,我寻找所有没有fv-modal-stack
类的背景。
下面是一些代码:
<script type='text/javascript'>
$(document).ready(function() {
$('#openBtn').click(function(){
$('#myModal').modal({show:true})
});
$('.modal').on('hidden.bs.modal', function( event ) {
$(this).removeClass( 'fv-modal-stack' );
$('body').data( 'fv_open_modals', $('body').data( 'fv_open_modals' ) - 1 );
});
$( '.modal' ).on( 'shown.bs.modal', function ( event ) {
// keep track of the number of open modals
if ( typeof( $('body').data( 'fv_open_modals' ) ) == 'undefined' )
{
$('body').data( 'fv_open_modals', 0 );
}
// if the z-index of this modal has been set, ignore.
if ( $(this).hasClass( 'fv-modal-stack' ) )
{
return;
}
$(this).addClass( 'fv-modal-stack' );
$('body').data( 'fv_open_modals', $('body').data( 'fv_open_modals' ) + 1 );
$(this).css('z-index', 1040 + (10 * $('body').data( 'fv_open_modals' )));
$( '.modal-backdrop' ).not( '.fv-modal-stack' ).css( 'z-index', 1039 + (10 * $('body').data( 'fv_open_modals' )));
$( '.modal-backdrop' ).not( 'fv-modal-stack' ).addClass( 'fv-modal-stack' );
});
});
</script>
<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">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h4 class="modal-title">Modal 1</h4>
</div>
<div class="container"></div>
<div class="modal-body">
Content for the dialog / modal goes here.
<br>
<br>
<br>
<p>more content</p>
<br>
<br>
<br>
<a data-toggle="modal" href="#myModal2" class="btn btn-primary">Launch modal</a>
</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 class="modal" id="myModal2">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h4 class="modal-title">Modal 2</h4>
</div><div class="container"></div>
<div class="modal-body">
Content for the dialog / modal goes here.
<br>
<br>
<p>come content</p>
<br>
<br>
<br>
<a data-toggle="modal" href="#myModal3" class="btn btn-primary">Launch modal</a>
</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>