1

我遠程加載的內容是這樣的:如何在加載遠程內容之前延遲加載Boostrap模式?

$('a[rel=modal]').on('click', function(evt) { 
    evt.preventDefault(); 
    var modal = $('#modal').modal(); 
    modal 
     .find('.modal-body') 
     .load($(this).attr('href'), function (responseText, textStatus) { 
      if (textStatus === 'success' || 
       textStatus === 'notmodified') 
      { 
       modal.show(); 
      } 
    }); 
}); 

的問題是,該模式的節目和1-2秒鐘後,裏面的內容顯示和擴展模式,因此它是一種「跳躍」。有沒有辦法延遲模態的加載,直到收到內容爲止?

+0

當你使用'$('#modal')。modal();'時,模態被調用,這就是爲什麼你在加載內容之前看到它的原因。我不知道你爲什麼使用'.show()',它不用於動畫,並且看起來並不相關http://api.jquery.com/show/。而不是使用'.load()'使用ajax請求並在成功調用並填充模式。 –

回答

2

夏季開發者在他們的評論中是正確的。在提出請求之前,您的模態正在顯示$('#modal').modal();。您應該在​​的回調函數中顯示模態,該模態在請求完成後觸發。這裏是你如何能使其以最小的改動你的代碼工作:

$('a[rel=modal]').on('click', function(evt) { 
    evt.preventDefault(); 
    var modal = $('#modal'); 
    modal 
     .find('.modal-body') 
     .load($(this).attr('href'), function (responseText, textStatus) { 
      if (textStatus === 'success' || 
       textStatus === 'notmodified') 
      { 
       modal.modal("show"); 
      } 
    }); 
}); 

通知我從jQuery對象中刪除.modal()電話,然後我用modal.modal("show")這可能是你所試圖做的(而不是.show()

+0

太棒了,非常感謝你!閱讀評論後,我開始嘗試找到一種方法來重寫所有內容,但這樣可以修復所有問題謝謝! :) – user1996496