2012-02-28 190 views
0

我有jQuery的問題,例如,我有這樣的代碼:如何防止頁面重新加載?

<a href="#" id="docs"><img id="icon" src="icons/docs.png"/></a> 

$("#docs").click(function() { 
$("#content").load("docs.php").hide().fadeIn("slow");}) 

所有的東西工作正常,但,當我重新載入追溯到預覽情況的網站,但我想要的網站仍然像點擊鏈接時一樣。

+0

你不能,但你可以警告用戶不好的事情會發生。 http://stackoverflow.com/questions/3221161/how-to-pop-up-an-alert-box-when-the-browsers-refresh-button-is-clicked – asawyer 2012-02-28 21:53:29

+0

有可能你可以使用jQuery/ajax來設置一個cookie /會話,然後使用服務器端代碼來有條件地加載ajax加載的相同內容,如果cookie存在的話。如果一旦用Ajax加載內容就設置cookie,則用戶可以重新加載頁面,並且服務器將在加載頁面時加載內容。 – 2012-02-29 00:34:56

回答

2

您可以使用#標籤的URL來檢測這一點。

首先,把你的ajax請求放在一個函數中,然後在兩種情況下調用這個函數:a)當用戶點擊鏈接時; b)如果hashtag是「#load_docs」。

$(document).ready(function() { 
    function load_contents() { 
     $("#content").load("docs.php").hide().fadeIn("slow"); 
    } 

    $("#docs").click(function() { 
     load_contents(); 
    }); 

    var hashtag = window.location.hash; 
    if (hashtag == "#load_docs") load_contents(); 

});  

不要忘記添加href="#load_docs"你的鏈接:

<a href="#load_docs" id="docs"><img id="icon" src="icons/docs.png"/></a> 
+0

謝謝你這個作品:) – 2012-02-29 06:26:19

0

只要確保你在return false;裏面點擊處理程序。

所以:

$("#docs").click(function() { 
    $("#content").load("docs.php").hide().fadeIn("slow"); 
    return false; 
}) 
+1

從點擊處理程序返回false是否與防止用戶重新加載頁面有關? – villecoder 2012-02-28 21:56:20

+0

我想他是說他不希望鏈接'#docs'刷新頁面,返回false將防止發生,因爲它不會執行實際的點擊,只是處理程序中的代碼。 – TheDelChop 2012-02-28 21:58:39

+0

編號他在說(引用此處)「當我重新加載網站時,它會回到預覽狀態」。他沒有說「當我點擊鏈接」。 – villecoder 2012-02-28 22:00:18