web-dev-qa-db-ja.com

Firefoxの「body」要素でjQuery scrollTop()が機能しない

ScrollTop()jquery関数がFirefoxの「body」要素で動作しない理由がわかりません。

$('body').scrollTop(0);

次を使用して問題を修正しました:

$(window).scrollTop(0);

ただし、jqueryのドキュメントによると、scrollTop()はこの例のようにすべての要素で機能するはずです。

$( "div.demo" ).scrollTop( 300 );

「nav」と「main」でもテストしましたが、どちらも機能していません。

18
j3r6me

スクロール

$(window).scrollTop(0);はすべてのブラウザIE9 +でサポートされているようです(IE8かもしれませんが、それ以上テストしていません)。

アニメーションスクロール

スクロールをアニメーション化する場合、windowオブジェクト(1.11.2テスト済み)を使用すると、jQueryはエラーを返します。代わりに、スクロールをアニメーション化するには、htmlbodyの両方を使用して、どちらか一方を利用するエンジンをカバーするのが最善です。そう:

$('html, body').animate({scrollTop:0},500);は、0.5秒でブラウザの上部までスクロールします。

スクロール位置

$('html,body').scrollTop()を使用してページの現在のスクロール位置を見つけることはできません-少なくともChromeはこれをサポートしていません(常に0を返します)。ページの位置、$(window).scrollTop();を使用する必要があります。

29
dewd

ブラウザ間で一貫性が必要な場合は、windowを使用します。

$(window).scrollTop();
10
Ivan V.

これを試して:

スクロールするdiv:

<div id="top"></div>

上部のjsをスクロールします:

$('html,body').animate({scrollTop: $('#top').offset().top},'slow');
2
wpdaniel