我在向导实现中使用了模态窗口,大约有4,5个步骤。我需要在最后一步(onFinish)和取消步骤(OnCancel)后完全销毁它,而不需要刷新页面。当然,我可以隐藏它,但是隐藏模态窗口会在下次打开时还原所有内容。有谁能帮我解决这个问题吗?
谢谢 任何提示或答案都对我有帮助。
我在向导实现中使用了模态窗口,大约有4,5个步骤。我需要在最后一步(onFinish)和取消步骤(OnCancel)后完全销毁它,而不需要刷新页面。当然,我可以隐藏它,但是隐藏模态窗口会在下次打开时还原所有内容。有谁能帮我解决这个问题吗?
谢谢 任何提示或答案都对我有帮助。
如果使用的是Bootstrap 3,您可以使用以下代码:
$("#mimodal").on('hidden.bs.modal', function () {
$(this).data('bs.modal', null);
});
$("#mimodal").removeClass('fade').modal('hide')
- John Gietzen$(this).html("");
。该语句的作用是清空当前元素的内容。 - Ryan Currah注意:此解决方案仅适用于Bootstrap版本3之前。有关Bootstrap 3答案,请参见用户2612497的此贴。
您想要做的是:
$('#modalElement').on('hidden', function(){
$(this).data('modal', null);
});
这将导致模态框在每次显示时都重新初始化自身。因此,如果您正在使用远程内容加载到 div 或其他地方,则每次打开它时都会重新执行。您只需在每次隐藏后销毁模态框实例即可。
或者,每当您想触发元素的销毁(如果实际上并不是每次隐藏它),您只需要调用中间那行代码:
$('#modalElement').data('modal', null);
Twitter bootstrap 寻找其实例位于数据属性中,如果实例存在,则只切换它,如果实例不存在,则会创建一个新的。
希望这能帮到您。
$("#modalElement").removeData("modal");
我正在使用Bootstrap 2.3.1和jQuery 1.9.1。 - tlavareahidden.bs.modal
事件,而不是hidden
事件。 http://getbootstrap.com/javascript/#modals - Romain Paulus对于 3.x 版本
$( '.modal' ).modal( 'hide' ).data( 'bs.modal', null );
对于2.x版本(风险较大;请阅读下面的评论),当您创建Bootstrap模态框时,页面上的三个元素会被更改。因此,如果您想完全回滚所有更改,您需要手动为每个元素进行操作。
$( '.modal' ).remove();
$( '.modal-backdrop' ).remove();
$( 'body' ).removeClass( "modal-open" );
style="padding-right: 17px;"
也将在body
上设置以解决隐藏滚动条的问题。底线:使用Bootstraps API,在v3中将是$('.modal').modal('hide').data('bs.modal', null);
。 - Oliver$("#modal").remove();
$('.modal-backdrop').remove();
$( 'body' ).removeClass("modal-open");
body
,因此建议的解决方案无法回滚所有更改。 - zelibobla$('#modalId').on('hidden.bs.modal', function () {
$(this).remove();
})
在我的电脑上完全正常运行。BS版本> 3
jQuery的强大之处。 $(selector).modal('hide').destroy();
将首先删除您可能具有的滑动效果,然后完全删除元素,但是如果您希望用户在完成步骤后能够重新打开模态框,则可能只想更新要重置的设置,因此要重置模态框中的所有输入,这将如下所示:
$(selector).find('input, textarea').each(function(){
$(this).val('');
});
也适用于Bootstrap 4.x。
$('#modal_ID').modal( 'hide' ).data( 'bs.modal', null );
bootstrap 3 + jquery 2.0.3:
$('#myModal').on('hide.bs.modal', function () {
$('#myModal').removeData();
})
body
,建议的解决方案无法回滚所有更改。 - zelibobla$('#myModal').on('hidden.bs.modal', function(){
$(this).find('iframe').html("");
$(this).find('iframe').attr("src", "");
});
<div class="modal hide fade">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h3>Modal header</h3>
</div>
<div class="modal-body">
<p>One fine body…</p>
</div>
<div class="modal-footer">
<a href="#" class="btn">Close</a>
<a href="#" class="btn btn-primary">Save changes</a>
</div>
</div>
$(selector).modal({show: true})
....
$(selector).modal({show: false})
$(".modal-body").empty()
....
$(".modal-body").append("new stuff & text")
$(selector).modal({show: true})
$(modal_selector).remove()
。 - robbrit