2017-07-29 6 views
1

ページが読み込まれたときにハッシュURLに基​​づいてアンカーにスムーススクロールするページにしたい。ハッシュURLからjquery scrolltop

すなわちwww.domain.com/pagename/#matches

私はこれを持っているが、それは

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

コンソールのエラーが

構文エラー、認識できない表現で働いていません:#[オブジェクトオブジェクト]

を更新し、私はそれが

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

で作業するしかしときのアニメーションが終了すると、デフォルトのアンカーアクションキックに入ったので、ページをジャンプして、私は理解している場合

+0

シェアyur完全なコード、あなたは何をすべきか – Bhargav

答えて

0

を達成しようとオフセットイムを無視あなたの質問が正しく、次にハッシュが見つかったかどうかを確認してURLから抽出し、scrollTopに渡します。

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

、私は実際にそれが 場合(window.location.hash){ \t \tするvar elemは= window.location.hashで作業しまったあなたに感謝。 \t \t $( 'HTML、本体')アニメーション({ \t \t \t scrollTopスプライト:$(ELEM).offset()トップ65 \t \t \t}、1000)。 \t \t \t falseを返します。 } 問題は、アニメーションのスクロール後も通常のアンカージャンプを行い、したがって達成しようとしているオフセットを取り除きます – Martin

関連する問題