0

私のhtmlファイルでは、dom操作を行う2つの外部javascriptファイルをロードしています。最初のファイルは、htmlにページを準備するだけです(divとコンテンツを挿入します)。2 つ目は、挿入されたばかりの div を見つけて、それを使っていくつかの処理を試みます。

var app = {
    init: function () {
        // event handler goes here
        app.alertMe('Hello');
        app.loadContent();
        app.insertDiv();
    },
    loadContent: function() {
        $('#div1').load('../html/demo_test.html');
    },
    insertDiv: function() {
        $('#div2').append('<strong>YEEEEEEAP</strong>');
    },
    alertMe: function(a) {
        alert(a);
    }

};

$(function () {
    app.init();
})

2 つ目は、このブートストラップ ライブラリです。私のhtmlファイルは次のとおりです

<html>
    <head>
        <meta http-equiv="content-type" content="text/html; charset=utf-8" />
        <title>A</title>
            <script type="text/javascript" src="page_prep.js">
    </script>
    </head>
    <body>
        body
    </body>
    <script type="text/javascript" src="bootstap_lib.js">
</html>

私は正しい順序でロード順序を持っていますが、存在する必要がある div が見つからないため、ライブラリが custom.js の前にロードされているように見えます。これにより、アクションが機能しなくなります。慎重なデバッグにより、後で div が挿入されたことが証明されました。

それが事実であるかもしれない理由は何ですか?

4

1 に答える 1

1

ページの読み込みが完了するまでインジェクションを延期しているため、ブラウザーがダウンロードするとすぐにブートストラップ スクリプトが実行されます。

スクリプト ファイルをブートストラップ スクリプトのすぐ上に移動し、次のように変更します。

$(function () { //This defers execution
    app.init();
})

これに:

app.init(); //This executes immediately
于 2013-08-15T20:06:06.633 に答える