0

我有一个 Web 应用程序,我正在转向基于 Ajax 的工作流。目前,我使用自己的基于页面 url 的路由机制加载我的 Javascript。为了跟踪 Ajax 的“页面”,我使用了哈希标签。我遇到的问题是如何在内容更改时重新初始化页面?我可以重新运行我的路由机制,但我不想意外地重新创建和重新附加现有事件。我认为在理想的解决方案中,我会在 Ajax 完成后对所有事件执行全局清理并重新初始化整个 Javascript。这样,我就不必担心元素是否消失或它是否已附加到事件或类似情况。

这个问题的最佳解决方案是什么?

4

1 回答 1

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);
于 2012-08-03T13:37:23.670 回答