1

我在我的网站上编写了一个平滑滚动的脚本,但它似乎不起作用,但其他声称它有效。(使用最新的chrome版本,没有尝试不同的浏览器)。任何建议可能是什么情况?我已经在下面的 html 页面中链接了脚本。

HTML:

<a id="top"></a>
**page content here**
<a href="#top">Go to top</a>

脚本:

$(document).ready(function() {
    $('a[href^="#"').click(function() {
        var target = $(this.hash);
        if (target.length == 0) target = $('a[name="' + this.hash.substr(1) + '"]');
        if (target.length == 0) target = $('html');
        $('html, body').animate({ scrollTop: target.offset().top }, 500);
        return false;
    });
});
4

3 回答 3

0

可能是 jQuery 版本问题,this.hash 在 1.7.2 中不起作用(我注意到了)

hash 是可以在包含 href 属性/属性的元素上找到的属性。

于 2013-09-11T06:55:36.540 回答
0

似乎不是问题,但您的选择器不正确:

$('a[href^="#"') // Wrong but jQuery appears to deal with it
$('a[href^="#"]') // Right

编辑

考虑到您使用的是旧版本的 jQuery(2008 年的 1.2.6),这实际上可能是问题所在:

$('a[href^="#"') // jQuery 1.2.6 in your page returns an empty set
$('a[href^="#"]') // Works with 1.2.6 : one anchor element in the set
于 2013-09-11T06:59:45.357 回答
0

您的代码在简单的设置中似乎可以正常工作,但我之前在 Chrome 中遇到过类似的问题。特别是如果您的 html 很复杂。Chrome 有时不承认需要重绘视口。发生这种情况时,我会在动画的每一步对 DOM 进行非常明显的更改,这应该会强制重绘。像这样的东西:

$("body").toggleClass("redraw");

我为你做了一个小提琴

也许它有帮助,也许它没有:)

于 2013-09-11T07:39:38.607 回答