-1

我正在使用 MVC,我的网站设计是有页眉、正文和页脚,我网站中的每个页面都有相同的页眉和页脚,但正文不同

并且对于任何页面都有一个包含 jquery 调用的 JS 文件

对于许多页面,当它打开时,jquery调用工作并使用ajax从数据库中获取数据并将该数据放入该页面

我的问题是:感觉 jquery 调用$(document).ready

例子

这个 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 回答