2010-04-22 3 views
0

Je souhaite implémenter le défilement infini (avec un chargeur AJAX) dans un corps de tableau HTML.Position de défilement dans un corps de tableau

Mon HTML ressemble à ceci:

<table> 
    <thead> 
    <tr><th>Column</th></tr> 
    </thead> 
    <tbody> 
    <tr><td>Row 1</td></tr> 
    <tr><td>Row 2</td></tr> 
    </tbody> 
</table> 

Je reçois une barre de défilement sur la <tbody> comme ceci:

tbody { 
    height:10em; /* Otherwise the tbody expands to fit all rows */ 
    overflow:auto; 
} 

Pour pouvoir rien faire lorsque l'utilisateur fait défiler vers le bas, Je dois être en mesure d'obtenir la position de défilement du <tbody>. Dans toutes les implémentations de défilement infini (jQuery) que j'ai vues (such as this one), elles soustraient la hauteur du contenu de la hauteur du conteneur et la comparent à la valeur .scrollTop().

Malheureusement, cela peut ne pas fonctionner avec <tbody>, qui est à la fois le viewport et le conteneur pour le contenu défilant. $("tbody").height() renvoie la taille visible (c'est-à-dire: "rétrécie"), mais je ne sais pas comment je peux obtenir la taille complète (visible + cachée) du corps de la table. (FWIW, $("tbody").scrollTop() renvoie un "grand" nombre quand défilé vers le bas, exactement comme je l'attendrais).

Y a-t-il un moyen d'accomplir cela?

+0

* grillons *. Les vues continuent à monter mais il n'y a pas d'activité. Je devine que ce n'est tout simplement pas possible compte tenu des navigateurs actuels. –

Répondre

1

tbody.scrollHeight fonctionne pour moi.

+0

Quel navigateur utilisez-vous? –

+0

FF 3.6.8. http://devsandbox.nfshost.com/tbody-scroll-test.html –

+0

C'est excellent, sauf que c'est JavaScript (et pas jQuery) et donc enclin à (IE) les bogues du navigateur/inconsistencey (voir http: //www.quirksmode .org/dom/w3c_cssom.html # t36). Cependant, c'est probablement assez bon pour une solution de tbody. –

1

Lorsque vous avez besoin de la hauteur cachée, vous pouvez régler la hauteur sur auto, l'attraper, puis ramener la hauteur à la taille forcée. Même IE doit traiter ce processus assez rapidement sans scintillement visible pour l'œil humain.

Questions connexes