2016-09-05 5 views
0

だから、私は次のコードを持っている:$.get()を使用するのではなく直接HTMLに含まれるJavaScriptの - AJAXコールバック内のDOMの変更が完了するまで待って

$(document).ready(function(){ 
    //Retrieve menu html 
    $.get('/modules/menu.php', function(data) { 
     //Load menu html 
     $('main#main').prepend(data); 
    }); 

    //Initialize Menu 
    menuInit(); 

    $('#menuToggle').click(function() { 
     $('#main_menu').fadeToggle(); 
    }); 
}); 

menuInit()が正常にDOM要素を修正するので、使う初期はありしかし、問題はありませんが、ajaxを使用すると、DOM要素が完全にロードされる前にメニューの初期化が開始されます。

私は少しの調査を行いましたが、.prepend()はコールバックをサポートしていないため、オプションではありません。

周囲 setTimeOut()と100msの動作がありますが、接続が遅い場合はほとんど確実に失敗します。より動的なものが必要です。それはデータの後に実行されるように、ただ、コールバック内のコードの残りの部分を入れ

+1

あなたは 'menuInit()' '$に呼び出しを移動するとどうなりますか。 '.prepend()'の後にget() '成功コールバック? ( '.prepend()'コールバックは必要ありません) – nnnnnn

+0

Hahahaha、awesome!あなたはちょうどそれを固定しました.O私はそれを試したと思った... – TheCamps10

答えて

0

がページに追加されました:

$(document).ready(function(){ 
    //Retrieve menu html 
    $.get('/modules/menu.php', function(data) { 
     //Load menu html 
     $('main#main').prepend(data); 

     //Initialize Menu 
     menuInit(); 

     $('#menuToggle').click(function() { 
      $('#main_menu').fadeToggle(); 
     }); 
    }); 

}); 
+0

@ TheCamps10 - これはあなたの質問に答えましたか? – jfriend00

関連する問題