【问题标题】:Jquery smooth scrolling: Cannot read property 'top' of undefinedJquery平滑滚动:无法读取未定义的属性“顶部”
【发布时间】:2013-12-22 12:17:39
【问题描述】:

我正在尝试编写一个 backtotop 按钮脚本,该按钮将位于整个站点的页脚中,由于某种原因,它返回“无法读取未定义的属性 'top'”。 任何帮助都会很棒,干杯。

JQUERY

$( '#backtotop' ).on('click', function(event) {
        event.preventDefault();
        var target = '#'+$(this).data('target')
            $('html, body').animate({
            scrollTop: $(target).offset().top
        }, 1000);
 });

HTML

    <a href="#" data-target="navigation"><span id="backtotop"><img id="upwardarrow" src="/img/upwardarrow.png"></span></a>

【问题讨论】:

    标签: javascript jquery html scroll jquery-animate


    【解决方案1】:

    试试:

    var target = '#'+$(this).parent().data('target');
    

    你代码中的this是指没有data-target的span,你必须从父&lt;a&gt;访问它

    或者像这样修改你的html:

    <a href="#" id="backtotop" data-target="navigation"><span><img id="upwardarrow" src="/img/upwardarrow.png"></span></a>
    

    id="backtotop"移动到&lt;a&gt;标签,不需要改js。

    【讨论】:

    • 谢谢,工作,将尽快接受作为答案。同时,您能解释一下它为什么有效吗?
    • 我明白你的意思,根据你的更新。没注意,谢谢大佬我将改为修改 html。 :-)
    • @Jack Williams:不客气。我很高兴它有帮助。
    • 哦,废话,完全忘记接受答案,现在排序,对不起老兄。
    【解决方案2】:

    你忘了用关闭线路;
    另外,我更改了目标定义。

    $( '#backtotop' ).on('click', function(event) {
            event.preventDefault();
            var target = $(this).parents().attr("href");
            alert(target);
                $('html, body').animate({
                scrollTop: $(target).offset().top;
            }, 1000);
     });
    

    经过测试并且可以正常工作。

    【讨论】:

    • 我收到“未捕获的语法错误:意外的令牌;” .top 之后的错误即使修复此代码不会在页面上滚动并且不会给我任何进一步的错误
    【解决方案3】:

    试试下面的代码:

    $( "#target" ).click(function() {
      $(document).scrollTop(0);
    });
    

    【讨论】:

    • 你如何设置速度?
    • @user1380540 你能详细说明你所说的速度是什么意思吗?你指的是滚动速度还是滚动开始前的延迟?
    • 滚动速度
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-31
    • 1970-01-01
    • 2020-04-08
    相关资源
    最近更新 更多