2014-08-30 68 views
0

好的,我在这里有一个奇怪的问题。我有以下的HTML文件,我已经包括我的jquery文件 - Core.js.现在根据实现,当用户点击索引链接时,我要将结果加载到结果div中。问题在于函数--fetchRecords()在html页面加载时运行,而不是等待用户单击索引。任何人都可以告诉这里有什么问题吗?加载页面而不是点击元素时运行的jQuery函数

Index.cshtml

<body> 
    <a href="#" id="indexpagelink">Index</a> 
    <div id="results"></div> 

    <script src="@Url.Content("~/Scripts/jquery-2.1.1.min.js")"></script> 
    <script src="@Url.Content("~/Scripts/Core.js")"></script> 
</body> 

Core.js

$(function() { 

var fetchRecords = function() { 

    var $a = $(this); 

    var options = { 
     url: "/Home/FetchRecords", 
     type: "post", 
     dataType: "html" 
    }; 

    $.ajax(options).done(function (data) { 

     var $target = $("#results"); 
     var $newHtml = $(data); 
     $target.html($newHtml); 
    }); 

    return false; 
}; 

$("#indexpagelink").on("click", fetchRecords()); 

}); 

编辑:另外,我需要知道,如果把脚本标记在身体的亲密比头标记将更有意义或不?

+0

删除()从',fetchRecords()' – mplungjan 2014-08-30 20:10:16

回答

4
$("#indexpagelink").on("click", fetchRecords); 

移除伴随物。与他们 - 你打电话的功能。

+0

哦,男孩!之前已经实现了这个东西,但不知何故只是错过了在这里找到bug。谢谢。 – Sam 2014-08-30 20:14:52

+2

那么,浏览器会在他们看到它们后立即开始下载和处理脚本标记。因此,如果您将它们放在首位并同步加载,那么浏览器将不会继续处理页面的其余部分,直到它下载并处理这些脚本。现代浏览器支持异步加载,但如果将脚本放在页面末尾,那么即使在旧版浏览器中,在浏览器开始下载和处理脚本之前,所有内容都将显示给用户,从而提供更好的用户经验。 – 2014-08-30 20:27:38

+0

对,合理。 – Sam 2014-08-30 20:29:37

相关问题