如何完全破坏bootstrap模态窗口?

Akk*_*kki 78 modal-dialog twitter-bootstrap

我已经使用模态窗口进行向导实现,它有大约4,5步.我需要在最后一步(onFinish)和OnCancel步骤之后完全销毁它,而不需要刷新页面.我当然可以隐藏它,但是当我再次打开它时,隐藏模态窗口会恢复所有内容.谁能在这个问题上帮助我?

谢谢任何提示答案对我有帮助.

小智 118

如果是bootstrap 3你可以使用:

$("#mimodal").on('hidden.bs.modal', function () {
    $(this).data('bs.modal', null);
});
Run Code Online (Sandbox Code Playgroud)

  • 正如其他所有答案一样,这似乎并没有消除背景. (7认同)
  • BS3中唯一对我有用的是:`$(this).html("");` (5认同)
  • @drillingman:+1对我有用:`$("#mimodal").removeClass('fade').modal('hide')` (3认同)
  • 这似乎不适用于bootstrap 3.3.4. (2认同)

Con*_*lsh 40

注意:此解决方案仅适用于版本3之前的Bootstrap.对于Bootstrap 3答案,请通过user2612497参考答案.

你想要做的是:

$('#modalElement').on('hidden', function(){
    $(this).data('modal', null);
});
Run Code Online (Sandbox Code Playgroud)

这会导致模态每次显示时都自动初始化.因此,如果您使用远程内容加载到div或其他任何内容,它将在每次打开时重新执行.您只是在每次隐藏后销毁模态实例.

或者每当你想要触发元素的破坏时(如果它实际上并非每次都隐藏它)你只需要调用中间行:

$('#modalElement').data('modal', null);
Run Code Online (Sandbox Code Playgroud)

Twitter引导程序查找其实例位于数据属性中,如果存在实例,则只需切换它,如果实例不存在,则会创建一个新实例.

希望有所帮助.

  • 这实际上以稍微不同的方式工作`$("#modalElement").removeData("modal");`我正在使用Bootstrap 2.3.1和jQuery 1.9.1 (5认同)
  • 如果使用Bootstrap 3,则必须侦听`hidden.bs.modal`而不是`hidden`事件.http://getbootstrap.com/javascript/#modals (5认同)

zel*_*oba 18

对于3.x版本

$( '.modal' ).modal( 'hide' ).data( 'bs.modal', null );
Run Code Online (Sandbox Code Playgroud)

对于2.x版本(冒险;阅读下面的注释)当您创建引导模式时,页面上的三个元素将被更改.因此,如果要完全回滚所有更改,则必须手动为每个更改执行此操作.

$( '.modal' ).remove();
$( '.modal-backdrop' ).remove();
$( 'body' ).removeClass( "modal-open" );
Run Code Online (Sandbox Code Playgroud)


Arj*_*jun 13

您可以通过这种方式完全销毁模态而无需重新加载页面.

$("#modal").remove();
$('.modal-backdrop').remove();
Run Code Online (Sandbox Code Playgroud)

但它会从你的html页面中完全删除modal.这个模态隐藏显示后将无法正常工作.

  • 这通过AJAX动态生成模态完美无瑕.谢谢!!! (4认同)
  • 这不起作用,因为背景会被卡住,为什么它甚至会被投票? (2认同)

小智 9

我试过接受的答案,但似乎对我没有用,我不知道接受的答案应该如何工作。

$('#modalId').on('hidden.bs.modal', function () {
  $(this).remove();
})
Run Code Online (Sandbox Code Playgroud)

这在我这边工作得很好。BS 版本 > 3