2012-08-03 206 views
0

我有一個Web應用程序,我正朝着基於Ajax的工作流程邁進。目前,我用我自己的基於頁面url的路由機制加載我的Javascript。爲了跟蹤Ajax'頁面',我使用了散列標籤。我遇到的問題是如何在內容更改時重新初始化頁面?我可以重新運行我的路由機制,但我不想意外重新創建和重新附加現有事件。我認爲,在理想的解決方案中,我將在Ajax完成時對所有事件執行全局清理,並重新初始化整個Javascript。這樣,我不必擔心元素是否消失,或者是否已附加到事件或類似事件。Javascript Ajax重新初始化

什麼是解決這個問題的最佳解決方案?

回答

3

您可以使用jQuery的hashchange事件:

$.on("hashchange", init); 

隨着init是你的路由功能或初始功能。

下面是我用一個例子:

function route() { 
    var loc = (location.hash && location.hash.split("#")[0]) || location.pathname; 

    if (loc.search("profile") !== -1) { 
     // do profile page stuff 
    } 
    if (loc.search("home") !== -1) { 
     // do home stuff 
    } 
} 

$.on("hashchange", route); 
+1

如果你沒有傳遞任何參數,只調用一個函數,可以將其簡化成'$。對(「hashchange」,路線) ;因爲匿名函數包裝器對你沒有任何幫助。 – 2012-08-03 13:44:41

+0

好,好點 – Austin 2012-08-03 13:45:04