3

リンクがクリックされたときにページコンテンツをロードするためにjQueryを使用していますが、

$(document).on('click', 'nav a', function (e) {
    e.preventDefault();

    var url = $(this).attr("href");
    window.history.pushState('', '', url);
    url += " #main_wrapper > *";

    $('#main_wrapper').load(url);

});

問題は、[戻る]ボタンをクリックしても、URLが変更され、何も起こらないことです。[戻る]ボタンをクリックしたときにコンテンツを再度読み込むにはどうすればよいですか。

また、新しいリンクがクリックされたときに既存のロードを停止/キャンセルするにはどうすればよいですか?

ありがとう。

編集:

これは私がこれを実装した方法です、あなたはあなたのニーズにこれを簡単に変更することができます。

window.onpopstate = function(event) {

    $('aside nav a').removeClass('active');
    $('a[href="' + document.location + '"]').addClass('active')

    $('#main_wrapper').load(document.location +" #main_wrapper > *");

};
4

1 に答える 1

1

戻るボタンがクリックされたときにコンテンツを再度ロードするにはどうすればよいですか?

ここでpopstate説明するように、「戻る」ボタンの押下を処理するには、イベントハンドラーをイベントに割り当てる必要があります。このハンドラーを使用すると、現在の履歴状態を分析し、それに応じてページを拡張できます。

また、新しいリンクがクリックされたときに既存のロードを停止/キャンセルするにはどうすればよいですか?

.load残念ながら、これは'originator' jQueryオブジェクトを返すため、では実行できません。$.ajaxただし、これをより低レベルの呼び出しに変換すると(このsuccess関数は、を使用して応答を要素にロードする必要があります。返されたjqXHRオブジェクト.html()を呼び出すことができます。.abort

于 2012-12-24T21:29:57.997 に答える