1

親ページで jQuery Load を使用して、URL からいくつかの子ページを動的に挿入しようとしています。親ページでは、次のようなことを行います。

var html = gridDiv.load(self.options.url, function(html, status, xhr)
{
gridDiv.find("myObject:first").data("objectInstance");
    //do something....
});

データオブジェクトは、ドキュメントの準備ができているときに実行される機能中に、子ページに実際に追加されます...

$().ready(function()

最初に気付いたのは、ローカルで実行するとすべてが期待どおりに機能することでした。しかし、実際の URL にデプロイすると、子ページで $().ready が完了する前に load complete イベントが発生します。最初の質問は、これは正しいですか、子ページで $().ready が呼び出された後にのみコードを実行できるようにする方法はありますか?

親ページでタイマーを使用して要素を確認するという回避策を試しました。しばらくすると要素が dom に表示されますが、データは空です。ただし、ボタンをクリックしてデバッガーを実行すると、そこにすべてが表示されます..

別の回避策として、スクリプトを子ページの下部に配置してから、ドキュメントを削除するという方法がありました。これもうまくいきませんでした。

助言がありますか?(自己完結型にする必要がある子ページのコード ロジックを変更することはできません)

4

2 に答える 2

2

コードをローカルで実行すると、実際には読み込み時間の遅延は見られません。あなたのコードの問題は、

    $().ready(function(){})
    //executes when HTML-Document is loaded and DOM is ready

だから私はあなたが使用することをお勧めします

    $(window).load(function(){});
    // executes when complete page is fully loaded, including all frames, objects, scripts and images
于 2013-01-14T22:59:50.930 に答える
1

実行したいコードを関数に入れて、子ページでその関数を呼び出してみましたか?

例えば:

//main page
$.ajax({
    url: "child.html",
}).done(function(data, xhr, status){
    $('body').append(data);
});

function child_finished_loading(){
    alert('child is done!');
}

//returned through ajax (child)
<span>This is being appended to main page!</span>
<script type="text/javascript">
    $(function(){
        child_finished_loading();
    });
</script>
于 2013-01-14T21:58:30.020 に答える