我想讓scrollspy在使用絕對url而不是#anchor鏈接時工作。Scrollspy使用完整的URL
例如,我可以輕鬆地運行scrollspy只用<a href="#section1"></a>
我希望能夠通過使用<a href="http://myurl.com/#section1"></a>
之所以這樣做是爲了運行scrollspy,是主頁上的主要導航scorllspy,但博客不是主頁的一部分。當訪問博客,然後點擊主頁上的鏈接時,您將被路由到http://myurl.com/blog/#section1
而不是主頁ID。
我發現這個解決方案(use url and hash with bootstrap scrollspy),但無法讓它充分發揮作用。經過一些調整和一些正則表達式組合後,我可以將它添加到第一個菜單項,但不會刷新。
任何想法讓這個工作?有我應該使用的另一個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 })
});
我爲了得到數據偏移刷新scrollspy後重新申請加入$('body').scrollspy({ target: '.nav-main', offset: 155 })
。經過一些試驗和錯誤之後,這是我能找到的唯一解決方案。
現在我只注意到你提到你的博客不是主頁的一部分。它是否在iframe或框架中?如果是這樣,滾動將不會跨文檔工作(框架在單獨的文檔元素中) –
它是同一個域的一部分。只是在使用錨點ID而不是完整的網址時,導航在除首頁之外的所有網頁都變得毫無用處。 我試過上面的代碼,但無法讓它工作。我改變了導航的ID,以我使用的ID無濟於事。 你可以看到我在這裏工作 - http://bic.bldsvr.com/ – SmashBrando
我想通了。我正在使用根啓動器主題,它剝離了破壞整個系統的相對URL。你的代碼是必需的,並且工作。 注意根主題的用戶禁用相對-urls.php – SmashBrando