3

私のページには、次のドキュメント準備機能があります。

$(document).ready(function(){
    $('a').click(function(){
       var toLoad = $(this).attr('href')+' #newdiv';        
       $('#mydiv').html('<p><img src="images/ajax-loader.gif" /></p>');
       $('#mydiv').load(toLoad, afterLoad());       

       function afterLoad() {
          alert('test');
       }         
       return false;        
    });
});

リンクをクリックすると、ターゲット リンクのコンテンツが現在のページに#newdiv読み込まれます。#mydivロードする前に、現在のコンテンツを#mydivアニメーション gif に置き換えます。読み込みが完了すると、アニメーション GIF が消え、新しいコンテンツが表示されます。これはすべて完全に機能しています。

しかし、読み込みが終わったら、という新しい関数を実行したいですafterLoad。とりあえず、追加したのはalert. 奇妙なことに、アニメーション gif がまだ表示されているときにアラート ボックスが表示されるため、新しいコンテンツがまだロードされているときに表示されます。afterLoad新しいコンテンツが既に配置されている場合に実行する別の方法はありますか?

4

2 に答える 2

3

への変更:

$('a').click(function(){
    var toLoad = $(this).attr('href')+' #newdiv';        
    $('#mydiv').html('<p><img src="images/ajax-loader.gif" /></p>');
    $('#mydiv').load(toLoad, afterLoad);
 });
function afterLoad() {
   alert('test');
} 
于 2012-12-20T12:04:29.377 に答える
3

コールバックで実行する関数を参照として渡す必要があります。これを試して:

$('#mydiv').load(toLoad, afterLoad);  // Note the removal of ()
于 2012-12-20T12:04:33.710 に答える