注:$.ready(..)
多くの人がそうであるように、「jquery is ready」と混同しないでください。$.ready(..)
は、ドキュメント自体の準備ができた (完全に解析された) ときに通知しますが、スクリプトの読み込み (特に LABjs のようなライブラリを使用した動的な種類) は完全に分離されています。ここでは、「jquery がロードされている/準備ができているか」を実際に探しています。これは、可能であればスクリプト ローダーで処理する必要があります。ドキュメントの準備が整うまで待つ必要がある場合もあります。その場合は、 も使用する必要があります。ただし、一方を他方に置き換えないでください。$.ready(..)
最も簡単な方法 (必ずしも最善とは限りません) は、メインの jquery ファイルをロードしている LAB チェーンを保持するマスター ページでグローバル変数を宣言し、それを子ページでチェーンすることです。したがって、マスターページでは:
var $jqLoading = $LAB.script("jquery.js");
そして子ページでは:
$jqLoading.wait(function(){
// my jquery code goes here
});
もう 1 つのオプションは、LABjs 重複排除スクリプト リクエスト (デフォルトの動作) に依存することです。そのため、各子で jquery のロードを試みますが、親と同じ URL を使用すると、LABjs は jquery のコピーが 1 つだけロードされるようにします。 、しかし、それを待っているすべてのチェーンは、1 つのロードが完了すると通知を受け取ります。したがって、子ページでは次のようになります。
$LAB.script("jquery.js").wait(function(){
// my jquery code goes here
});
これは少し効率が悪いかもしれませんが、グローバル変数を必要としないため、IMO の設計が優れています。
最も洗練された解決策は、promise のようなものを使用して jQuery スクリプトの読み込みを表し、各子ページでその promise のチェーンを使用することです。これはここで取り上げる範囲を超えていますが、promise について知りたい場合は、promise についての情報がたくさんあります。