来自哈希网址的jquery scrolltop

时间:2017-07-29 05:50:10

标签: jquery scrolltop

我希望页面在页面加载时根据哈希URL平滑滚动到锚点。

www.domain.com/pagename/#matches

我有这个,但它不起作用

var elem = $('#_' + window.location.hash.replace('#', ''));
if(elem) {
     $('html,body').animate({
          scrollTop: $('#' + elem).offset().top-65
        }, 1000);
        return false;
}

控制台错误

语法错误,无法识别的表达式:#[object Object]

更新

我使用了

if(window.location.hash) {
     var elem = window.location.hash;
     $('html,body').animate({
          scrollTop: $(elem).offset().top-65
        }, 1000);
        return false;
}

然而,当动画结束时,默认的锚定动作会启动,从而跳转页面并忽略我试图实现的偏移

1 个答案:

答案 0 :(得分:0)

如果我正确理解了您的问题,请检查是否找到了哈希,然后从网址中提取并将其传递给scrollTop

if(window.location.hash) {
      var hash = window.location.hash.substring(1);
      $(document.body).animate({
          'scrollTop':   $('#' + hash).offset().top
      }, 2000);
}