2012-01-18 13 views
4

$(document).ready()に多くのHTMLが生成されています。私は単純なウィンドウシステムを持っています。しかし、それは$(document).ready()で生成されるだけでなく、いくつかのHTML要素(異なるJSファイルは$(document).ready()にものを入れます)。 $(document).ready()が呼び出された後、私のウィンドウシステムが生成されるようにしたい。だから、$(document).ready()に登録されているすべてのコードが完了した後に、呼び出す関数をどのように処理するのですか?

+2

は、$(文書)の多くを厥。準備完了()! ;-) – janhartmann

+0

document.ready()の.ready()が必要ですか?これはjQueryの仕組みではなく、JavaScriptのイベントベースのモデルのため、WordPressのようなものと異なり、jQueryはready()関数に入れたコードがすべて完了したことを「知る」方法がありません。したがって、document.ready()の後に呼び出されるイベントはありません。あなた自身でイベントを作成し、完了するのを待つか、window.load()を使う必要があります。 – Cole

答えて

6

後で発生する別のイベントがあります。それは$(window).load()です。これは、すべてのリソースがロードされた後に発生します。

は、しかし、おそらくあなたはこれをしたい:

function loadWindowSystem(){ 
    // load window system here 
} 

$(document).ready(function(){ 
    // do some html stuff here 

    loadWindowSystem(); 
}) 

あなたが機能でコードを分離することができますこの方法。

+0

注:イメージだけでなくすべてのリソースがロードされたときにwindow.loadが発生する –

+0

これは、生成するために$(document).ready( "")を使用する各ドキュメントで 'loadWindowSystem()'を呼び出す必要があることを意味しますHTML ...また、.jsの読み込みは重要なことを言っているでしょう... – myWallJSON

+0

Didier、ありがとう、私は私の答えでそれを変更しました。 – timing

0

が、この関数の後には何もありませんので、あなたには、いくつかのAJAXローダーを持っている場合のみ、それらのすべてを待ってから、

EDITのレンダリングを開始することであるあなたが行うことができると思います。しかしあなたは自分のコードをstructuralizeいけないのはなぜだろうこれを排除する。

0

$(document).ready()は、DOMのロードが完了した直後に呼び出されます。 pageLoad()が0タイマーで次に呼び出されますが、部分的なポストバックが実行されるたびに実行されます。

編集:サイドノートが追加されました。これは、ASP.NETを使用する場合、上記のpageLoad機能がjQueryとは別の場合にカウントされます。あなたは右のすべての$(document).ready()のコールの後に発射するために何かをしたい場合は、あなたがあなたのページに一度どこかにこれを置くことができるより多くの情報Here

2

を参照してください:

$(document).ready(function() { 
    setTimeout(function() { 
     // call your code here that you want to run after all $(document).ready() calls have run 
    }, 1); 
}); 

これは、他のすべてのdocument.readyコールと一緒に呼び出されますそれ以外のすべてのdocument.ready呼び出しが終了した後に実行される短いタイムアウトを設定します。

3

私は通常setTimeout使用して主張しませんが、より抽象的なアプローチを作成するために、@ jfriend00の答えの上に構築することができます

$(document).ready(function() { 
    setTimeout(function() { 
     $(document).trigger('afterready'); 
    }, 1); 
}); 

$(document).bind('afterready', function() { 
    // call your code here that you want to run after all $(document).ready() calls have run 
}); 
6
$(window).load(function(){ 
    //some code after ready 
    }); 
+1

ここでは、答えの回りを歩く話がたくさんあります。これは質問された質問に対する正確な答えです。 – JackArbiter

関連する問題