jQuery平滑滚动以锚定在不同页面上

时间:2019-02-26 03:30:20

标签: javascript jquery html

如果元素链接到同一页面上的锚点,则我的jQuery平滑滚动有效,但是当链接到不同页面上的锚点时,它不能平滑滚动。

我的jQuery脚本是否存在明显的问题?

<script>
jQuery(function($) {

// //////////////////////// Smooth Scroll To Specific Element On Page ////////////////////////

$(document).ready(function() {
    $('a[href^="#"]').not('.carousel-control-prev').not('.carousel-control-next').bind('click.smoothscroll', function(e) {
        e.preventDefault();

        var hash = this.hash;

        jQuery('html, body').animate({
            scrollTop: jQuery(hash).offset().top - 65
        }, 1500, function(){});
    });
});

//////////////////////// Smooth Scroll To Specific Element On Different Page ////////////////////////

$(document).ready(function(){
    var urlHash = window.location.href.split("#")[1] || false;
    if (urlHash.length > 0)
        $('html,body').animate({
            scrollTop: $('#' + urlHash).offset().top - 60
        }, 2500);
});

});

1 个答案:

答案 0 :(得分:1)

这应该有效,可以尝试吗?另外有时,如果已经加载了url,它有时会滚动到没有动画的哈希值,然后先尝试不通过缓存重新加载(Shift + F5)或(Ctrl + F5)

$(document).ready(function () {
    var urlHash = window.location.href.split("#")[1];
    if (urlHash &&  $('#' + urlHash).length )
          $('html,body').animate({
              scrollTop: $('#' + urlHash).offset().top - 60
          }, 2500);
});