0

コンテンツをロードするためにajax呼び出しを使用しているアプリケーションがあります。これらのajax呼び出しは、HTMLのみを取得しています。Javascriptは別のファイルにあります。

AJAX呼び出しを実行した後、できるだけ早くjavascriptの実行を開始する必要がある関数を呼び出します。

ここでは、ajax呼び出しからコードを取得する小さな関数を残します。

function loadPage(page) {
    $(".container").html("");
    if(page == "page1") {
        $.ajax({
            url: "/page1.php",
            success: function(html){
                $(".container").html(html);
                loadPage1Script();
            } 
        });
    }else if(page == "page2"){
        $.ajax({
            url: "/page2.php",
            success: function(html){
                $(".container").html(html);
                loadPage2Script();
            } 
        });
    }
}

その後、loadPage1Script()またはloadPage2Script()を実行します。

function loadPage1Script(){
    //Start the carousel plugin, for example
}

新しいコードがHTML構造に追加されました。$(document).ready();を呼び出す必要があります。すべてのイベントハンドラーをアタッチするコードを実行する前に、loadPage1Script()で?そうしないと違いはありますか?$(document).ready();を追加すると、スクリプトの起動が速くなりますか??

function loadPage1Script(){
    $(document).ready(function(){
        //Start the carousel plugin, for example
    });
}

jqueryサイト(http://api.jquery.com/ready/)から取得:

ほとんどの場合、スクリプトはDOM階層が完全に構築されるとすぐに実行できます。.ready()に渡されるハンドラーは、DOMの準備ができた後に実行されることが保証されているため、通常、これはすべてをアタッチするのに最適な場所です。他のイベントハンドラーと他のjQueryコードを実行します。 "

4

2 に答える 2

1

loadpagealeadyを呼び出した後に関数を呼び出す場合

$( document ).ready( function () {
    ...
});

その後、それは問題ではないはずです。また、関数は非同期ではないため、関数をすぐ$.fn.htmlに実行しても問題はありません。loadPageScript

于 2013-02-07T12:32:21.320 に答える
1

これらの関数の内部で使用する必要はありません$(document).ready()。実行される時点で、必要なDOM要素がすでに存在しているためです(関数を呼び出す前にページに挿入しただけです)。

ただし、要素が存在することを確認するために、loadPage内部で元の関数を呼び出す必要があります。$(document).ready().container

于 2013-02-07T12:32:39.773 に答える