2016-02-28 145 views
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); 
     } 
    }); 
}); 
+0

你曾经推动两次相同的状态吗?如果你是,或者你的事件处理程序意外造成这种情况,它可能会解释为什么你必须告诉它返回两次或更多。 –

+0

是的你是对的。每次关闭灯箱并再次打开时,它都会添加一个额外的请求。我需要明白为什么它会这样做。感谢您指出问题。 –

+0

很酷。我把它作为答案,以便您可以将其标记为已解决。 –

回答

1

你很可能会推动相同的状态两次,可能事件处理程序不止一次触发。

当你调试的原因,那么你会解决你的情况下行事不端PopState :)