Jquery平滑滚动:无法读取未定义的属性“top”

时间:2013-12-22 12:17:39

标签: javascript jquery html scroll jquery-animate

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

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>

3 个答案:

答案 0 :(得分:2)

尝试:

var target = '#'+$(this).parent().data('target');
您的代码中的

this指的是没有data-target的范围,您必须从父<a>

访问它

或者像这样修改你的HTML:

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

id="backtotop"移至<a>标记,无需更改js。

答案 1 :(得分:0)

请尝试以下代码:

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

答案 2 :(得分:0)

你忘了用;
来关闭这条线 另外,我改变了目标定义。

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

经过测试和工作。