2

私と他の多くの開発者は、then<head>タグ、またはビューページの''タグに小さなインラインスクリプトブロックを書くことに慣れていると思います。今、私の頭はこのように見えます、

<head>
    <title>Simple Demo</title>
    <script>
        function setCheckCheckboxState(checkbox, state) {

        }

        $(function() {

            $("#tri-state").prop("indeterminate", true);
        });
    </script>
</head>

なんらかの理由でコードは正常に実行されますが、Chromeデベロッパーコンソールの$(function()呼び出しのすぐ上で、エラーが発生しますUncaught ReferenceError: $ is not defined

コードをデバッグしようとしているときに、コードに関係のないエラーが表示されるのは気に入らないので、をタグに移動し@Scripts.Render("~/bundles/jquery")ました。<head>ドキュメント全体がロードされた後にのみjQueryコードを呼び出すために使用するほぼ本能的な関数に私たち全員がアクセスできるのに、なぜMSはそれを本文の後に移動する必要がありますか?

4

2 に答える 2

2

主にパフォーマンスのため。これを参照してください: mvc4テンプレートのページの下部に含まれているjQueryスクリプト

于 2013-03-03T09:27:40.850 に答える
1

スクリプトは、jQueryjQueryを使用する関数の前に宣言する必要があります。

Uncaught Referenceこのコードは、発生しているエラーを解決するために、jQueryスクリプト参照の後に呼び出す必要があります。

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

ベストプラクティス(Yahoo!や他の多くの人が行っている)によると、スクリプトはタグの終わりの前に追加される</body>ため、MSはそのアプローチを選択しました。技術的に言えば、UI要素がDOMにロードされた後、スクリプトはすでにページの下部にあるため、ドキュメント準備機能$(function(){});は必要ありません。安全対策のためだけに使用することをお勧めします。

<body>
   <div id="content"></div>
   @Scripts.Render("~/bundles/jquery")
   <script type="text/javascript">
       $(function() {
           ....
       });
   </script>
</body>
于 2013-03-03T06:53:52.300 に答える