Comment faire défiler une ligne d'une table dans la vue (l'élément.scrollintoView) à l'aide de jQuery?
Je suis dynamiquement ajouter des lignes à une table à l'aide de jQuery.
Le table
est à l'intérieur d'un div
qui a overflow:auto
ainsi à l'origine d'une barre de défilement verticale.
Je veux maintenant autoscroll mon conteneur div
à la dernière ligne. Quelle est la version de jQuery tr.scrollintoView()
?
- Comme par cette réponse, c'est apparemment un construit en fonction DOM pris en charge dans tous les principaux navigateurs. Simplement
element.scrollIntoView()
fonctionne.
Vous devez vous connecter pour publier un commentaire.
devrait faire l'affaire!
fixed scrolling
fonctionnalités/plugin.Cette suite fonctionne mieux si vous avez besoin de faire défiler à l'arbitraire d'un élément dans la liste (plutôt que de toujours vers le bas):
Plugin qui permet de faire défiler (avec animation) que lorsque c'est nécessaire
J'ai écrit un plugin jQuery qui fait exactement ce qu'il indique sur l'étain (et aussi exactement ce que vous avez besoin de). La bonne chose est qu'il ne défilement conteneur lorsque l'élément est en fait hors. Sinon, pas de défilement sera effectuée.
Il fonctionne aussi facile que cela:
Il trouve automatiquement plus proche de défilement ancêtre qui dispose d'un excédent de contenu et montre des barres de défilement. Donc si il y a un autre ancêtre avec
overflow:auto
mais n'est pas défilement sera ignoré. De cette façon, vous n'avez pas besoin de fournir de l'élément déroulant parce que parfois vous ne savez même pas qui on est scrollable (je suis en utilisant ce plugin dans mon site Sharepoint où le contenu/maître est développeur indépendant, il est donc hors de mon contrôle, - HTML peut changer lorsque le site est opérationnel, donc peut défilement des conteneurs).var target = $(selector); target.get(0).scrollIntoView();
beaucoup plus simple:
si plus d'un élément renvoie dans le sélecteur, le get(0) afin d'obtenir uniquement le premier élément.
Ce praticable exemple montre comment utiliser scrollIntoView() qui est pris en charge dans tous les navigateurs modernes:
https://developer.mozilla.org/en-US/docs/Web/API/Element.scrollIntoView#Browser_Compatibility
L'exemple ci-dessous utilise jQuery pour sélectionner l'élément avec
#yourid
.JS:
HTML:
this.scrollIntoView(true)
être beaucoup plus simple?Si vous voulez juste pour faire défiler, vous pouvez utiliser du jQuery scrollTop méthode. http://docs.jquery.com/CSS/scrollTop
Quelque chose comme ça peut-être?
J'ai trouvé un cas (débordement div > table > tr > td) dans lequel le défilement de la position relative de la tr ne fonctionne pas. Au lieu de cela, j'ai dû faire défiler le déversoir (div) à l'aide de scrollTop à
<tr>.offset().top - <table>.offset().top
. Par exemple:Même à partir de ci-dessus avec peu de modifications,
JS:
HTML:
JS:
HTML:
Je n'arrivais pas à ajouter un commentaire à Abhijit Rao réponse ci-dessus, de sorte que je présente cela comme une réponse supplémentaire.
J'avais besoin d'avoir la colonne du tableau de défilement en vue sur une grande table, j'ai donc ajouté le faites défiler vers la gauche caractéristiques dans le fonction. Comme quelqu'un l'a mentionné, il saute quand il défile, mais cela a fonctionné pour mes fins.