1

所以我发现自己陷入了相当的困境。我正在使用附加的代码对 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));
}

});

现在,如果您要为像我这样的粘性导航偏移空间,则窗口将在锚点处加载,然后向上移动到所需的偏移量。这不是我想要的理想,但这是我能得到的最接近的。

4

0 回答 0