Ich habe genauso gedacht, aber warum unterscheidet sich console.log ($ (this) .scrollTop ()) = 1187 console.log ($ (this) .height ()) = 1762 so stark? Für 575px, wenn ich zum Ende der Seite gescrollt habe. Wo sind diese 575px geblieben? Bildlaufleiste kann nicht 576px sein :)
Jemand
3
Baaah wieder meine Schuld. Ich schaute auf die Bildlaufleiste mit geöffnetem Firebug-Fenster. Ofc kann es jetzt 576px sein. :) Danke, ich denke, das Thema ist geschlossen.
Jemand
101
-1 - Das ist sehr schön, beantwortet aber nicht die Frage, um die es ging scrollHeight.
Wayne
8
Richtig, das ist eine Frage. Aber weder $ (Dokument) .height () noch $ (Dokument) .scrollTop () geben die gewünschten Informationen. Die Anfrage war für scrollHeight. Der Wert scrollHeight ist die Gesamthöhe, die einem Element zur Verfügung steht (wenn es scrollbar ist, ist dieser Wert möglicherweise größer als seine Höhe). scrollTop gibt zurück, wie weit das Element von oben entfernt wäre. Weder antworten, wie hoch die insgesamt verfügbare Höhe ist. Siehe help.dottoro.com/ljbixkkn.php für das Verständnis von scrollHeight
teynon
4
Dies wird als Antwort markiert, da es die beabsichtigte Frage des Fragestellers beantwortet, bei der es um die Höhe ging, in der das Dokument gerade gescrollt wird ... also "scrollHeight". Es ist ein Zufall, dass dieser Name in einem anderen Kontext verwendet wird.
Chase Sandmann
177
So erhalten Sie das scrollHeightElement, das Sie mit einem jQuery-Selektor erhalten haben:
$(selector)[0].scrollHeight
Wenn selectordie ID des Elements (z. B. elemId) angegeben ist, ist garantiert, dass das 0-indizierte Element des Arrays das Element ist, das Sie auswählen möchten, und scrollHeightkorrekt ist.
Verwenden Sie in Übereinstimmung mit @Tomas die Abstraktion von jQuery, um besser mit browserübergreifenden Macken umgehen zu können. Zum Beispiel kann das Obige in $ (Selektor) .offset (). Top geändert werden
Bob Gregor
3
Ähm, kein $ (Dokument) .offset () gibt null zurück, und .offset () hat nichts mit der Position der Bildlaufleisten des Browsers zu tun (.offset () gibt Koordinaten von Elementen relativ zum Dokument zurück). Ich bin damit einverstanden, dass wir jQuery verwenden sollten, wenn dies möglich ist. Da dies jedoch keine browserübergreifende Unterstützung bietet, bietet jQuery keine Abstraktion dafür.
BrainSlugs83
2
Sie können auch $ (Selektor) .get (0) .scrollHeight
Ally
1
@Dmitri Zaitsev .scrollHeight ist eine DOM-Knoteneigenschaft, keine jQuery-Eigenschaft.
Zemljoradnik
45
Wenn Sie Jquery 1.6 oder höher verwenden, verwenden Sie prop, um auf den Wert zuzugreifen.
$(document).prop('scrollHeight')
In früheren Versionen wurde der Wert von attr abgerufen, jedoch nicht nach 1.6.
Dies gibt für mich mit jQuery 1.7.1 "undefined" zurück, ebenso wie $ (document) .attr ("scrollHeight").
Michael
5
Das liegt daran, dass das Körperelement fehlt. Es muss $ (document.body) .prop ('scrollHeight') sein - an diesem Punkt können Sie auch einfach document.body.scrollHeight verwenden.
Aus irgendeinem Grund funktioniert diese Funktion bei mir nicht richtig. Verwenden Sie es in einem Iframe. Die tatsächliche Höhe von <html> beträgt 256 Pixel, diese Funktion gibt mir 337 Pixel und ich habe keine Ahnung, woher sie kommt. PS Ich benutze Chrome 18.
Jurchiks
@jurchiks: Hast du einen Link zu dem Ort, an dem sich dieser Iframe befindet, damit ich ihn mir ansehen kann?
Zuul
klingen.dateks.lv/salidzinat?ids=58664,43586 . Klicken Sie auf eines der Fragezeichen. Ich habe es geschafft, das meiste davon zu reparieren, aber zwei davon (und es gibt mehr, abhängig von den verglichenen Elementen) haben immer noch einen seltsamen, mysteriösen ~ 20px-Rand am unteren Rand. Es verschwindet jedoch, wenn ich die Größe des Fensters verändere, da ich die Popup-Abmessungen beim Ändern der Fenstergröße geändert habe.
Jurchiks
3
Um die tatsächliche scrollbare Höhe der Bereiche zu erhalten, die von der Fenster-Bildlaufleiste gescrollt werden, habe ich verwendet $('body').prop('scrollHeight'). Dies scheint die einfachste Arbeitslösung zu sein, aber ich habe die Kompatibilität nicht ausführlich überprüft. Emanuele Del Grande merkt an, dass dies für IE unter 8 wahrscheinlich nicht funktioniert.
Die meisten anderen Lösungen funktionieren gut für scrollbare Elemente, dies funktioniert jedoch für das gesamte Fenster. Insbesondere hatte ich das gleiche Problem wie Michael für Ankits Lösung, nämlich das, was $(document).prop('scrollHeight')zurückkehrt undefined.
Sie können dies beispielsweise versuchen. Mit diesem Code wird die Bildlaufleiste für alle DIV-Tags unten angezeigt
Denken Sie daran: jQuery kann eine Funktion anstelle des Werts als Argument akzeptieren. "this" ist das von jQuery behandelte Objekt. Die Funktion gibt die scrollHeight-Eigenschaft des aktuellen DIV "this" zurück und führt dies für alle DIV im Dokument aus.
scrollHeight
.So erhalten Sie das
scrollHeight
Element, das Sie mit einem jQuery-Selektor erhalten haben:Wenn
selector
die ID des Elements (z. B.elemId
) angegeben ist, ist garantiert, dass das 0-indizierte Element des Arrays das Element ist, das Sie auswählen möchten, undscrollHeight
korrekt ist.quelle
Wenn Sie Jquery 1.6 oder höher verwenden, verwenden Sie prop, um auf den Wert zuzugreifen.
In früheren Versionen wurde der Wert von attr abgerufen, jedoch nicht nach 1.6.
quelle
quelle
Es werden HTML-DOM-Elemente verwendet, jedoch kein jQuery-Selektor. Es kann verwendet werden wie:
quelle
So etwas sollte Ihr Problem lösen:
Ps: Rufen Sie diese Funktion jedes Mal auf, wenn Sie sie benötigen. Die Warnung dient zu Testzwecken.
quelle
Um die tatsächliche scrollbare Höhe der Bereiche zu erhalten, die von der Fenster-Bildlaufleiste gescrollt werden, habe ich verwendet
$('body').prop('scrollHeight')
. Dies scheint die einfachste Arbeitslösung zu sein, aber ich habe die Kompatibilität nicht ausführlich überprüft. Emanuele Del Grande merkt an, dass dies für IE unter 8 wahrscheinlich nicht funktioniert.Die meisten anderen Lösungen funktionieren gut für scrollbare Elemente, dies funktioniert jedoch für das gesamte Fenster. Insbesondere hatte ich das gleiche Problem wie Michael für Ankits Lösung, nämlich das, was
$(document).prop('scrollHeight')
zurückkehrtundefined
.quelle
Versuche dies:
quelle
Sie können dies beispielsweise versuchen. Mit diesem Code wird die Bildlaufleiste für alle DIV-Tags unten angezeigt
Denken Sie daran: jQuery kann eine Funktion anstelle des Werts als Argument akzeptieren. "this" ist das von jQuery behandelte Objekt. Die Funktion gibt die scrollHeight-Eigenschaft des aktuellen DIV "this" zurück und führt dies für alle DIV im Dokument aus.
quelle