我有一个Web应用程序,我正在转向基于Ajax的工作流程。目前,我使用自己的路由机制加载我的Javascript,该机制基于页面URL。为了跟踪Ajax的“页面”,我使用了哈希标记。我遇到的问题是,当内容发生变化时,如何重新初始化页面?我可以重新运行我的路由机制,但我不想意外地重新创建和重新附加现有事件。我认为在理想的解决方案中,我会在Ajax完成后对所有事件执行全局清理并重新初始化整个Javascript。这样,我就永远不必担心元素是否已经消失,或者它是否已附加到事件或类似事件上。
这个问题的最佳解决方案是什么?
答案 0 :(得分: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);