0

なぜこれがうまくいかないのかわからず、すべてを試してきました。

オンラインのチュートリアルのほとんどは、私が使用していない Ajax を使用しており、それを適応させようとしましたが、何も動作しません。私が使用しているのは bang URL で、すべてのコンテンツがインデックス ページにロードされ、動的に表示および非表示になっています。履歴を機能させるには、本当に助けが必要です。

これが私のスクリプトです...

History.Adapter.bind(window, 'statechange', handleStateChange);
$('nav a').on('click',function(e) {
    var target = $(this).attr('href');

    History.pushState(null, null, target);
});

function handleStateChange() {
    alert("State changed...");
}

アラートを発生させることができれば、そこから移動できますが、アラートが発生せず、理由がわかりません。

4

2 に答える 2

1

「$('nav a')」は、投稿したコードのタイプミスだと思います。次のようにする必要があります。

....
$('#nav a').on('click',function(e) {
var target = $(this).attr('href');
....

このFIDDLEでは、id 属性として「nav」を含むタグ div を使用し、その中にいくつかのリンクを使用することを想定しています。

于 2013-08-23T21:58:42.960 に答える
0

次のように、イベントをバインドする前に関数を定義するだけです。

function handleStateChange() {
    alert("State changed...");
}
History.Adapter.bind(window, 'statechange', handleStateChange);
$('nav a').on('click',function(e) {
    var target = $(this).attr('href');

    History.pushState(null, null, target);
});

または、私が通常行うのと同じように、バインド内で関数を定義する方がはるかに優れています。もちろん、スクリプトの後半で同じ関数を使用する必要がない場合です。

History.Adapter.bind(window, 'statechange', function() {
    alert("State changed...");
});

$('nav a').on('click',function(e) {
    var target = $(this).attr('href');

    History.pushState(null, null, target);
});
于 2013-08-23T21:58:24.987 に答える