0
我在主页上有一个图像列表,点击后我发起一个AJAX请求,将内容加载到一个灯箱。我也有他们之间的分页。每次用户点击下一个或上一个箭头时,我都会使用PushState更改URL,并且运行良好。我对后退按钮有问题。有时我需要点击两次或更多才能返回。当它不回去时它只是重新加载相同的内容。PopState不按预期工作。
$(document).on("click", ".content a", function(event){
event.preventDefault();
var url = $(this).attr("href");
$("body").append($overlay);
history.pushState({}, '', url);
$.ajax({
url : url,
type : 'GET',
success : function(data){
$overlay.append(data);
$overlay.show();
}
});
});
$(document).on("click", ".fa-angle-right", function(event){
event.preventDefault();
var url = $(this).parent("a").attr("href");
history.pushState({}, '', url);
$.ajax({
url : url,
type : 'GET',
success : function(data){
$overlay.html(data);
}
});
});
$(window).on("popstate", function(event) {
var url = location.href;
$.ajax({
url : url,
type : 'GET',
success : function(data){
$overlay.html(data);
}
});
});
你曾经推动两次相同的状态吗?如果你是,或者你的事件处理程序意外造成这种情况,它可能会解释为什么你必须告诉它返回两次或更多。 –
是的你是对的。每次关闭灯箱并再次打开时,它都会添加一个额外的请求。我需要明白为什么它会这样做。感谢您指出问题。 –
很酷。我把它作为答案,以便您可以将其标记为已解决。 –