所以我发现自己陷入了相当的困境。我正在使用附加的代码对 jQuery 中的锚点进行简单的滚动。当我在页面上并且滚动到本地锚点时,滚动可以工作,但是当我需要返回滚动以锚定在另一个页面上时,我的问题就出现了。
var scrollWin = function (selector) {
var bar = jQuery(selector).offset().top;
bar = bar - 80;
jQuery('html, body').animate({
scrollTop: bar
}, 1000);
}
jQuery('[href^=#]').click(function(e) {
scrollWin (jQuery(this).attr('href'));
return false;
});
当内部页面上的链接从“#div”更改为“/#div”时,我发现了一个适用于外部页面的代码,但是更改内部页面上的导航链接不是一种选择。非常感谢任何和所有帮助,欢呼。
更新
所以这就是我最终的结果
jQuery(document).ready(function(){
jQuery('a[href*=#]:not([href=#])').click(function() {
if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'')
|| location.hostname == this.hostname) {
var target = jQuery(this.hash);
target = target.length ? target : jQuery('[name=' + this.hash.slice(1) +']');
if (target.length) {
jQuery('html,body').animate({
scrollTop: target.offset().top - 80
}, 1000);
return false;
}
}
});
});
然后对于返回到带有锚链接的页面的外部页面
jQuery(window).load(function(){
function goToByScroll(id){
jQuery('html,body').animate({scrollTop: jQuery("#"+id).offset().top - 80},'slow');
}
if(window.location.hash != '') {
goToByScroll(window.location.hash.substr(1));
}
});
现在,如果您要为像我这样的粘性导航偏移空间,则窗口将在锚点处加载,然后向上移动到所需的偏移量。这不是我想要的理想,但这是我能得到的最接近的。