使用 css 隐藏 div 的浏览器后退按钮

Browser back button with divs hidden with css

我有一个显示房地产搜索结果的网站,例如使用 <div>s,默认情况下仅显示 6 个和 "load more" 按钮。当用户点击 Load more 按钮时,会显示另外 9 个帖子等。它是如何完成的:默认隐藏 divs (display: none;),然后添加 .show class到接下来的 9 项。

a("span.more-search-items").on("click", function(t) {
    t.preventDefault();
    var e = a(this).parents(".property-search");
    e.find(".prop").not(".show").slice(0, 9).each(function() {
        var t = a(this).attr("data-img");
        a(this).css("background-image", "url(" + t + ")"), a(this).find(".main-image").attr("src", t), a(this).addClass("show")
    }), 0 == e.find(".prop").not(".show").length && a("span.more-search-items").hide();
    e.find(".prop.show").length

当用户转到单个 属性 然后点击返回浏览器按钮时,它会再次显示前 6 个项目。我尝试在那里实现 history.pushState() 方法,其中 URL 每个 "load more" 按钮单击都会发生变化:

var href = window.location.href.replace(window.location.hash, '');
var currentPage = location.hash.replace("#","");
history.pushState(null, null, href + "#" + (+currentPage + 1));

URL 发生了变化,但情况仍然相同 - 当用户返回历史记录时,仅显示前 6 个结果。在这种情况下我能做些什么吗?

如果你需要处理History API你需要

  • 在加载更多点击时,您需要推送或替换历史记录,例如带有散列的可见 div 的数量 #15 , #24 像这样

  • 在 push/replace 状态下你需要使用 $(window).on('popstate' , function(){ alert(window.location.hash); }) 而当 用户进入单一 属性 它刷新所有页面以及当浏览器后退按钮单击它时 returns 并刷新上一页..因此您需要在页面加载时检查 alert(window.location.hash);

最后,当您收到来自 window.location.hash 的号码的警报时,您可以根据它显示 div

好的,让我用代码为您解释一下

$(document).ready(function(){

    alert(window.location.hash); // check the alert here

    $('.load_more_button').on('click' , function(){
        if(window.location.hash){
           var href = window.location.href.split('#');
           var currentPage = parseInt(window.location.hash);
           history.pushState(null, null, href[0] + "#" + (+currentPage + 1));
        }
    });
    $(window).on('popstate' , function(){
        alert(window.location.hash);  // check the alert here
    });
});

拿到号码就可以从这里开始,随心所欲