Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 让history.js在没有Ajax加载页面的情况下工作_Jquery_History.js - Fatal编程技术网

Jquery 让history.js在没有Ajax加载页面的情况下工作

Jquery 让history.js在没有Ajax加载页面的情况下工作,jquery,history.js,Jquery,History.js,我不知道为什么这不起作用,我一直在尝试一切 大多数在线教程都在使用Ajax,我并不这么认为,我也尝试过对其进行调整,但没有任何效果。我使用的是has bang URL,所有内容都加载在索引页面中,只是动态显示和隐藏。我真的需要一些帮助来让历史发挥作用 这是我的剧本 History.Adapter.bind(window, 'statechange', handleStateChange); $('nav a').on('click',function(e) { var target =

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

大多数在线教程都在使用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...");
}

如果我可以让警报发生,我可以从那里开始,但警报永远不会触发,我不知道为什么。

只需在绑定事件之前定义您的函数,方法如下:

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);
});
我认为“$('nava')”是您发布的代码中的一个输入错误,应该是:

....
$('#nav a').on('click',function(e) {
var target = $(this).attr('href');
....
在本文中,我假设您希望使用带有“nav”作为id属性的标记div以及其中的一些链接
希望有帮助。

元素是一个新的HTML5标记,在本例中不是一个打字错误:)我不知道这个新标记。。。因此,如果你把它当作'div'或'p'或任何其他标记,我假设:$('nav')。find('a')是编码它的正确方法……嗨,麦克,我有一个类似的问题。如果我在一个页面中使用它,比如:a.html?state=1和a.html?state=2,那么脚本就可以正常工作。但是,我在两个页面中使用History.js,例如:a.html和b.html。所以,它不能运行。请帮我回答这个问题: