web-dev-qa-db-fra.com

jQuery scrollTop () ne fonctionne pas sur l'élément 'body' dans Firefox

Je ne comprends pas pourquoi la fonction scrollTop () jquery ne fonctionne pas sur l'élément 'body' sur Firefox.

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

J'ai corrigé mon problème en utilisant:

$(window).scrollTop(0);

Cependant, selon la documentation de jquery, scrollTop () est supposé fonctionner sur tous les éléments comme dans cet exemple:

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

J'ai également testé avec 'nav' et 'main' mais cela ne fonctionne pas non plus.

16
j3r6me

Faire défiler

$(window).scrollTop(0); semble être supporté par tous les navigateurs IE9 + (peut-être IE8 mais je ne teste plus dessus).

Défilement animé

Si vous souhaitez animer un défilement, jQuery renvoie une erreur si vous utilisez l’objet window (testé avec la version 1.11.2). Pour animer un parchemin, il est préférable d’utiliser html et body pour couvrir les moteurs qui utilisent l’un ou l’autre. Alors:

$('html, body').animate({scrollTop:0},500); fera défiler vers le haut du navigateur dans une demi-seconde.

Position de défilement

Vous ne pouvez pas utiliser $('html,body').scrollTop() pour trouver la position de défilement actuelle de la page - au moins, Chrome ne le prend pas en charge (renvoie toujours 0). Au lieu de cela, pour trouver systématiquement la position de défilement d'une page, il est nécessaire d'utiliser $(window).scrollTop();.

27
dewd

Utilisez window si vous voulez une cohérence entre les navigateurs.

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

essaye ça:

votre div à faire défiler:

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

et faites défiler en haut js: 

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