0

Ajax ベースのワークフローに移行している Web アプリケーションがあります。現在、ページの 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 に答える