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();で表示されています。代わりに、要求が完了した後に起動する​​のコールバック関数でモーダルを表示する必要があります。ここでは、それはあなたのコードに最小限の変更で動作させることができる方法である:あなたがやろうとしている(代わりの.show()たおそらく何である私はjQueryオブジェクトから.modal()呼び出しを削除してから、私はmodal.modal("show")を使用

$('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"); 
      } 
    }); 
}); 

お知らせ)

+0

それは素晴らしいです、ありがとう!コメントを読んだ後、私はすべてを書き直す方法を見つけようとし始めましたが、これは私のすべての問題を修正しましたありがとうございました! :) – user1996496

関連する問題