2012-01-20 10 views
2

ユーザーがウィジェットとやりとりするときに、オンデマンドでファイル& JSコード&のビットとピースを動的に読み込むウィジェットを開発しています。すべてのAJAX読み込み要素とコードが完全に読み込まれた後にコードを実行するには?

私はいくつかのコード/ファイルが次のコードが実行される前に完全にロードされていないという問題に遭遇しています。これにより、jQueryダイアログや表示されないHTMLコードブロックに欠けているボタンが表示されます。これは、その準備が整う前にJSが表示されるためです。

は、私は、次のjQueryのメソッドの両方を試してみたが、一貫してどちらの作品:

$("#dynamic1, script[name$='/forms.js']").ready(function() {/* my code*/}); 
$("#dynamic1, script[name$='/forms.js']").load(function() {/* my code*/}); 

が、私はコードが実行される「私のコード」ブロックをロードされているに依存しているすべての項目ことを確認する必要がありますし、一度だけ実行する必要があります。

私がここで間違っていることは何ですか?

+0

RequireJSのようなローダーで既に試されていますか?おそらくあなたはそれをDeferredsと '$ .when'と組み合わせる必要があります。私が正しい道を歩いているかどうかを教えてください。私はあなたにその方向を導く何かを書くことができます。 – gonchuki

+0

AJAX呼び出しとそのコールバックのコードを表示できますか? –

+0

私はRequireJSを試していませんが、今はオプションとして検討しています。私は、AJAXのいくつかの呼び出しを非同期に変更しようとしました:偽ですが、まだインスタンスを作成しています(はるかに少ない)。例えば、私が '$(" selector ")のようなダイアログを作成した場合、ダイアログ({buttons:{Submit:submitResultFunc、Cancel:function(){$ e(this).dialog( 'close');}})'そのコールバックがsubmitResultFuncであり、その関数がforms.jsで宣言されている場合、スクリプトが完全にロードされ、すべての関数が使用可能であることを確認する必要があります。表示されていない場合は、[送信]ボタンが表示されません。 – eComEvo

答えて

1
$.when(

    // one or multiple ajax requests 

).then(function() { 

    // After the ajax request is done 

}); 
関連する問題