jQuery Smooth Scroll到任何Anchor

b25*_*550 6 html javascript jquery

我已经尝试了许多不同的代码来平滑滚动到锚点.我找不到一个有效的.它需要能够垂直,水平和对角滚动.我与其他人发现的另一个问题是它们似乎不适用于多个目标.我希望它能够滚动到页面上的任何锚点,而无需编辑脚本.

小提琴

这是最匹配的代码,我无法使其工作:

var $root = $('html, body');
$('a').click(function () {

    $root.animate({

        scrollLeft: $($.attr(this, 'href')).offset().left,
        scrollTop: $($.attr(this, 'href')).offset().top

    }, 500);

    return false;
});
Run Code Online (Sandbox Code Playgroud)

它在JSFiddle中工作,但是当我把它放在我的页面上时它不起作用.

为什么这不重复? 这是一个多方向脚本,不针对单个元素.它适用于页面上的所有链接.

小智 2

我无法让你的 jsfiddle 工作,看看这是否有效:

$(function(){
    $('a').on({
      click:function (e) {
        e.preventDefault();
        var root = $("html, body");
        var target = $(this).attr("href");
        root.animate({  
            scrollLeft: $(target).offset().left,
            scrollTop: $(target).offset().top
        }, 500);
      }
    });
)};
Run Code Online (Sandbox Code Playgroud)