首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery平滑滚动在第一个锚点返回错误

问jQuery平滑滚动在第一个锚点返回错误
EN

Stack Overflow用户
提问于 2014-02-23 10:06:05
回答 1查看 692关注 0票数 0

我想使用平滑滚动转到我主页上的锚点。我使用下面的jQuery代码:

代码语言:javascript
复制
$(document).ready(function(){
    $('a').click(function(){
        $('html, body').animate({
            scrollTop: $($.attr(this, 'href')).offset().top
        }, 1000);
            return false;
    });
});

这是HTML代码:

代码语言:javascript
复制
<div id="menu">
        <div id="menu-contain">
            <ul>
                <li><a class="home" href="#">Home</a></li>
                <li><a class="about" href="#about">About</a></li>
                <li><a class="projects" href="#projects">Projects</a></li>
                <li><a class="contact" href="#contact">Contact</a></li>
            </ul>
        </div>
    </div>

这对除第一个锚之外的每个锚都很有效。如果我查看控制台,如果我单击第一个链接,则会出现错误:

代码语言:javascript
复制
Cannot read property 'top' of undefined

我找到了很多关于这个错误的线索,但我没有找到适合我的解决方案。

感谢您的建议:)

EN

回答 1

Stack Overflow用户

发布于 2014-02-23 10:08:24

在使用目标元素之前,请检查它是否存在:

代码语言:javascript
复制
$('a').click(function(){
    var $target = $($.attr(this, 'href'));

    if ( ! $target.length ) return;

    $('html, body').animate({
        scrollTop: $($.attr(this, 'href')).offset().top
    }, 1000);

    return false;
});

你也应该在那里缓存你的选择器。See this thread for more details。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21963247

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档