在jQuery中使用slide()进行平滑滚动,不会平滑滚动

时间:2014-07-11 19:06:36

标签: javascript jquery

我创建了一个简单的html文件,其中包含可以单击的锚链接,可以平滑地滚动到页面的各个部分(标签)。问题是卷轴根本不光滑! 我在youtube上观看了一个教程,其中使用的代码是(这里的代码我适合我的项目,但方式是一样的):

function goto(numsection){
        var section = $('#section'+numsection);
        var offset = section.offset().top;
        $(document).scrollTop(offset);
        $(section).slide('slow');
}

单击锚点时,页面向下滚动到相应的部分,但转换是立即的。在JavaScript控制台中出现了以下错误:

Uncaught TypeError: undefined is not a function

我不明白,在教程中工作得很好。

PS:我想尽可能使用slide()功能,而不是slideToggle()或类似功能。

1 个答案:

答案 0 :(得分:0)

我猜你没看过那个视频 在所述视频中,您发布的代码从未实现平滑滚动,只是突然跳转 我不知道你为什么只想使用slide()而只是。我不熟悉slide(),我知道slideUp()slideDown(),但这些用于其他目的。

但是,这是我喜欢处理滚动(或查看jsfiddle)的方式:

$(".link").on('click', function(e)
{        
    $(".link").each(function()
    {
        $(this).removeClass('selected');
    });

    $(this).addClass('selected');

    var scrollSpeed = 2000;
    var scrollTop = $(window).scrollTop() - 50;
    var id = $(this).attr('data-scroll-to');

    var goTo =  $('#s'+ id).offset().top;

    e.preventDefault();

    $("html, body").stop().animate({ scrollTop: goTo }, scrollSpeed);

});