jQuery on back按钮查找hash标记并触发点击事件

jQuery on back button find hash tag and fire click event

本文关键字:事件 back on 按钮 查找 hash jQuery      更新时间:2023-09-26

我的网站允许人们发布内容(类似于twitter),并试图通过jQuery/Ajax使其更加精简。人们可以选择发布许多类别,每个类别都按主类别或部分组织(如果你愿意的话)。

每当用户单击导航面板左侧的某个部分时,该项目就会向上移动到列表的顶部,然后向下展开,显示该部分中的所有类别。发生的另一件事是,主内容区域逐渐消失,并与属于该部分和类别的新内容(用户帖子)一起出现。到目前为止,这一切都很顺利,看起来棒极了!

然而,假设你点击一个部分和类别,可以看到该特定类别中的所有帖子。然后你点击一个帖子进入帖子,查看所有信息、评论等。现在,你想回到你原来的位置,所以你点击了后退按钮。现在执行此操作时,它将返回并再次显示主页面的详细信息,而不是您之前选择要查看的类别。

我添加了以下代码来显示要选择的类别(例如:"/#/community"),并检查哈希,然后触发"点击"事件以触发该类别再次显示。

last_known_hash = location.hash;
window.setInterval(function() {
    if(last_known_hash != location.hash) {
        $('#categories-panel a[name="'+ location.hash.substring(2) +'"]').click();
        last_known_hash = location.hash;
    }
}, 500);

点击返回后,它仍然会在URL中显示"#/community",但不会触发点击。这很奇怪,因为如果你在URL中键入"#/community",它确实可以正常工作。所以我真的不确定为什么点击"返回"时没有正确触发它。我不确定这是否是最好/正确的方式,但这是我目前所能想到的。也许改为做一次会议?一如既往,任何帮助都将不胜感激:)

附言:我知道点击事件本身是有效的,因为当我在firebug中运行它时,它非常有效。

摘要:当有人在浏览器中单击"返回"时,我需要它转到他们上次所在的位置,例如:sitehere.com/#/community,然后触发一个单击事件,再次显示"社区"类别的内容。

historyJS和HTML5历史popState和pushState。这些是你需要学会做你想做的事情的术语。

我认为这个插件:https://github.com/cowboy/jquery-hashchange解决您的问题