だから、私は次のコードを持っている:$.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の動作がありますが、接続が遅い場合はほとんど確実に失敗します。より動的なものが必要です。それはデータの後に実行されるように、ただ、コールバック内のコードの残りの部分を入れ
あなたは 'menuInit()' '$に呼び出しを移動するとどうなりますか。 '.prepend()'の後にget() '成功コールバック? ( '.prepend()'コールバックは必要ありません) – nnnnnn
Hahahaha、awesome!あなたはちょうどそれを固定しました.O私はそれを試したと思った... – TheCamps10