-1
<html>
    <head>
        <title>Hello</title>
    </head>
    <body>
        <h1>Welcome</h1>


        <script>
            $(function() {
                // $ is undefined
            });
        </script>
        <script src="js/jquery.js"></script>
    </body>
</html>

関数を実行する前に、ドキュメントが読み込まれ、jQuery が読み込まれるのを待つ方法はありますか?

4

4 に答える 4

5

いいえ

存在する前に参照$していますが、それは単に機能しません。

存在すると仮定js/jquery.jsすると、これは機能します:

<script src="js/jquery.js"></script>
<script>
        $(function() {
            // your code goes here
        });
</script>

$最初のスクリプト タグは、2 番目のスクリプト タグが参照する前に定義されるためです。

ドキュメントの準備が整うまで待つ必要はありません

この明らかな追加点を指摘してくれた @KevinB に感謝します。

スクリプト タグが head にある場合、スクリプトがロードされたときに body は存在しません。このため、javascript を実行する前に HTML ページが存在することを確認するために document ready を使用するのが一般的です。

スクリプト タグがページの下部にある場合、スクリプトが読み込まれるときに HTML が既に存在するため、ドキュメントの準備完了イベントを待つ必要はありません。そのため、js コードは次のようになります。

<script src="js/jquery.js"></script>
<script>
         // your code goes here
</script>
</body>
</html>
于 2013-07-19T19:36:25.620 に答える
0

あなたのためにシンプルに -

<html>
<head>
    <title>Hello</title>
</head>
<body>
    <h1>Welcome</h1>

    <script src="js/jquery.js"></script>

    <script>
        $(function() {
            // $ is undefined
        });
    </script>
</body>

于 2013-07-19T19:37:49.030 に答える
0

技術的には、できます。

function main() {
  if (! window.jQuery) {
    setTimeout(main, 100);
    return;
  }
  // Some code that uses jQuery
}

setTimeout(main, 100);

これも可能ですが、古いブラウザでは確実に動作しない可能性があります。

window.onload = function() {
  // Some code that uses jQuery
};
于 2013-07-19T19:45:01.057 に答える