3 回答

TA貢獻1871條經驗 獲得超13個贊
當您執行AJAX請求時,請確保您沒有替換包含實際模態窗口的容器,因為當您嘗試關閉它時,Bootstrap將無法找到對它的引用。在Ajax完整處理程序中刪除模態然后替換數據。
如果這不起作用,您可以通過執行以下操作來強制它消失:
$('#your-modal-id').modal('hide');
$('body').removeClass('modal-open');
$('.modal-backdrop').remove();

TA貢獻1784條經驗 獲得超7個贊
確保您$.modal()應用模態行為的初始調用不會傳遞超出預期的元素。如果發生這種情況,它將最終為集合中的EACH元素創建一個帶有背景元素的模態實例。因此,看起來背景可能已被遺忘,實際上你正在查看其中一個副本。
就我而言,我試圖使用這樣的代碼動態創建模態內容:
myModal = $('<div class="modal">...lots of HTML content here...</div><!-- end modal -->');
$('body').append(myModal);
myModal.modal();
在這里,結束</div>標記之后的HTML注釋意味著myModal實際上是兩個元素的jQuery集合 - div和注釋。他們兩個都盡職盡責地變成了模態,每個都有自己的背景元素。當然,除了背景之外,評論所形成的模態是不可見的,所以當我關閉真實模態(div)時,它看起來就像是留下了背景。

TA貢獻1853條經驗 獲得超9個贊
我只是花了太長時間才解決這個問題:)
雖然提供的其他答案都是有用且有效的,但是我從Bootstrap中有效地重新創建模態隱藏功能似乎有點麻煩,所以我找到了一個更清晰的解決方案。
問題是當你打電話時會發生一系列事件
$("#myModal").modal('hide');
functionThatEndsUpDestroyingTheDOM()
當您因為AJAX請求而替換一堆HTML時,模態隱藏事件無法完成。但是,當一切都完成時,Bootstrap會觸發一個事件,你可以像這樣掛鉤:
$("#myModal").modal('hide').on('hidden.bs.modal', functionThatEndsUpDestroyingTheDOM);
希望這有用!
- 3 回答
- 0 關注
- 595 瀏覽
添加回答
舉報