# アンカー リンクではなく絶対 URL を使用する場合に scrollspy を機能させようとしています。
たとえば、使用するだけで scrollspy を簡単に実行できます<a href="#section1"></a>
を使用してscrollspyを実行できるようにしたい<a href="http://myurl.com/#section1"></a>
これを行う理由は、ホームページのメイン ナビゲーションが scorllspy であるためですが、ブログはホームページの一部ではありません。ブログにアクセスしてからホームページ上の何かへのリンクをクリックするとhttp://myurl.com/blog/#section1
、ホームページ ID ではなくにルーティングされます。
私はこの解決策を見つけました(bootstrap scrollspyでurlとhashを使用します)が、完全に機能させることができませんでした。いくつかの微調整と多数の正規表現の組み合わせの後、アクティブなクラスを最初のメニュー項目に追加することができましたが、更新されませんでした。
これを機能させることについて何か考えはありますか?使用する必要がある代替の js ライブラリはありますか?
トロイのおかげで解決
jQuery(function($){
// local url of page (minus any hash, but including any potential query string)
var url = location.href.replace(/#.*/,'');
// Find all anchors
$('.nav-main').find('a[href]').each(function(i,a){
var $a = $(a);
var href = $a.attr('href');
// check is anchor href starts with page's URI
if (href.indexOf(url+'#') == 0) {
// remove URI from href
href = href.replace(url,'');
// update anchors HREF with new one
$a.attr('href',href);
}
// Now refresh scrollspy
$('[data-spy="scroll"]').each(function (i,spy) {
var $spy = $(this).scrollspy('refresh')
})
});
$('body').scrollspy({ target: '.nav-main', offset: 155 })
});
$('body').scrollspy({ target: '.nav-main', offset: 155 })
scrollspyをリフレッシュした後にデータオフセットを再適用するために追加しました。試行錯誤の末、これが私が見つけた唯一の解決策です。