1

Web サイトでスムーズにスクロールするためのスクリプトを作成しましたが、機能していないように見えますが、他の人は機能すると主張しています。(最新の 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

あなたのコードは簡単なセットアップでうまく動作するようですが、Chrome で同様の問題が発生したことがあります。特に、HTML が複雑な場合。Chrome は、ビューポートを再描画する必要があることを認識しないことがあります。これが起こったときに私がすることは、アニメーションの各ステップで DOM に非常に明白な変更を加えることであり、再描画を強制する必要があります。このようなもの:

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

私はあなたのためにフィドルを作りました。

役立つかもしれませんが、そうでないかもしれません:)

于 2013-09-11T07:39:38.607 に答える
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

jQueryのバージョンの問題かもしれませんが、1.7.2ではthis.hashが動かない(気が付いた)

ハッシュは、href 属性/プロパティを含む要素で見つけることができるプロパティです。

于 2013-09-11T06:55:36.540 に答える