-1

私はMVCを使用しています.私のウェブサイトのデザインは、ヘッダーとボディとフッターがあり、私のウェブサイトのすべてのページには同じヘッダーと同じフッターがありますが、ボディは異なります.

そして、ページごとに、jquery呼び出しを含むJSファイルがあります

そして、開いているときに多くのページで、jquery呼び出しが機能し、ajaxを使用してデータベースからデータを取得し、そのデータをそのページに配置します

私の質問は次のとおりです。jquery 呼び出しが で始まることを認識して$(document).readyください。したがって、任意のページを開くと、すべての jquery 呼び出しが開始されます。それは望ましくありませんが、開いているページの jquery だけをロードする必要があります。

ページのためだけのこのjquery

$(document).ready(function(){
    $.getJSON("http://localhost/Mar7ba/Cell/getAllCountries/TRUE",function(data){
        var select = $("#countrySelector");
        var options = '';
        for(var i=0;i<data.length;i++){
            options += "<option>"+data[i]+"</option>";
        }
        select.html("<option>Select Source</option>"+options);
    });
});

別のページのこのjqueryですが、最初のページをロードするとロードされます

$(document).ready(function(){
        $.getJSON("http://localhost/Mar7ba/Type/getAllTypes/TRUE",function(data){
            var options = '';
            options+="<option>Select Type</option>";
            for(var i=0;i<data.length;i++){
                options += "<option>"+data[i]+"</option>";
            }
            $("#addPlace #apTypeSelect").html(options);
        });
    });
4

3 に答える 3

1

スクリプトをページで実行したくない場合は、次のいずれかを実行します。

  1. そもそもページに載せないでください
  2. それを実行することが現在のページに適切であるかどうかをチェックする条件でそれを包みます
于 2012-05-18T13:16:45.327 に答える
1

AJAX メソッドを起動する前に、操作している要素の存在をテストします。たとえば、最初の例では:

$(document).ready(function(){
    var select = $("#countrySelector");
    if (select.length) { // must test .length; 'select' always exists even if it's empty
        $.getJSON("http://localhost/Mar7ba/Cell/getAllCountries/TRUE",function(data){
            var options = '';
            for(var i=0;i<data.length;i++){
                options += "<option>"+data[i]+"</option>";
            }
            select.html("<option>Select Source</option>"+options);
        });
    }; // end if
});
于 2012-05-18T13:36:36.000 に答える
1

すべてのページのすべての起動関数を document.ready に入れると、関数が長くなりすぎて読みやすさに影響すると思います。ページごとに異なる起動関数を記述し、読み込み時にページから呼び出す必要があります。これにより、コードはよりシンプルになります。

jsファイルで

function InitialFunctionOfPage1()
{//define all prerequisites}

function InitialFunctionOfPage2()
{//define all prerequisites}

各ページでは、 document.ready に関連する機能を使用できます。ページ1には十分です

$(document).ready(function()
{
 InitialFunctionOfPage1();
}
于 2012-05-18T15:25:03.307 に答える