jQueryのスムーズスクロールであえて#をつける方法

パララックスなサイトなどでよく使われるページ内リンクをスクロールさせて移動するスクリプト。

見た目がよく、#もつかなくてスマートなのですが、複数のコンテンツを1ページで見せている場合、特定のコンテンツだけを見せたいときにそのアドレスをコピーしても#がついていないため、リンクをクリックすると常にトップが表示されてしまうことがあり、これがネックになることがあるのでそれを解決するための方法。

$(document).ready(function(){

 $(“a[href^=#]”).on(“click”,function () {
  var c = $(this).attr(“href”);
  var d = $(c).offset().top;
  setTimeout(function(){
   $(‘html,body’).animate({ scrollTop: d }, 1500,”easeOutCubic”);
   setTimeout(function(){//アニメーションが終える時間に合わせて以下3行を追加
    location.href=c;
   },1500);
  },100);
  return false;
 });

});

上記のようなかたちで通常のスムーズなスクロールを実行した直後にターゲット先にリンクさせると不自然な動きをさせずに#を付加したアドレスを維持できます。