如何在不跳转文档的情况下更新window.location.hash?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (27)

我在我的网站上设置了一个滑动面板

function() {
   window.location.hash = id;
}

下面是更改面板的代码

$('#something a').click(function(event) {
    event.preventDefault();
    var link = $(this);
    var id = link[0].hash;

    $('#slider').scrollTo(id, 800, {
        onAfter: function() {

            link.parents('li').siblings().removeClass('active');
            link.parent().addClass('active');
            window.location.hash = id;

            }
    });
});
提问于
用户回答回答于
if(history.pushState) {
    history.pushState(null, null, '#myhash');
}
else {
    location.hash = '#myhash';
}
用户回答回答于

解决这一问题的一种方法是在散列前面加上一个任意值,如下所示:

window.location.hash = 'panel-' + id.replace('#', '');

然后,所需要做的就是检查页面加载时的前缀散列

$(function(){
    var h = window.location.hash.replace('panel-', '');
    if (h) {
        $('#slider').scrollTo(h, 800);
    }
});
var foundHash;
setInterval(function() {
    var h = window.location.hash.replace('panel-', '');
    if (h && h !== foundHash) {
        $('#slider').scrollTo(h, 800);
        foundHash = h;
    }
}, 100);

所属标签

可能回答问题的人

  • 红双喜经典VS中华

    1 粉丝0 提问8 回答
  • LemonLu

    社区 · 运营 (已认证)

    45 粉丝0 提问4 回答
  • 13火麒麟

    0 粉丝0 提问4 回答
  • 吉_Gi

    0 粉丝3 提问3 回答

扫码关注云+社区