2014-08-30 69 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

相關問題