0

我不知道为什么这不起作用,我一直在尝试一切。

大多数在线教程都使用 Ajax,我不是,我已经尝试过调整它,但我无法得到任何工作。我正在使用 has 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中,我假设您想使用带有“nav”作为 id 属性的标签 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 回答