Ich frage mich nur, wie ich mehr Daten beim Scrollen nur implementieren kann, wenn das div.loading sichtbar ist.
Normalerweise suchen wir nach Seitenhöhe und Bildlaufhöhe, um zu sehen, ob wir mehr Daten laden müssen. aber das folgende Beispiel ist dann wenig kompliziert.
Das folgende Bild ist ein perfektes Beispiel. In der Dropdown-Box befinden sich zwei .loading-Divs. Wenn der Benutzer durch den Inhalt scrollt, sollte er, je nachdem, was sichtbar ist, mehr Daten für ihn laden.
Wie kann ich also herausfinden, ob .loading div für den Benutzer noch sichtbar ist oder nicht? Ich kann also nur Daten für dieses Div laden.
quelle
new_element.hide().appendTo('.your_div').fadeIn(); $(window).scrollTop($(window).scrollTop()-1);
ersten Zeile werden Elemente auf nette Weise angehängt, in der zweiten wird sichergestellt, dass Ihre Funktion niemals am Ende der Seite stoppt.var end = $("#BottomThing").offset().top; var viewEnd = $(window).scrollTop() + $(window).height(); var distance = end - viewEnd; if (distance < 300) // do load
Haben Sie schon von dem gehört jQuery Waypoint - Plugin .
Im Folgenden finden Sie die einfache Möglichkeit, ein Wegpunkt-Plugin aufzurufen und die Seite mehr Inhalt laden zu lassen, sobald Sie beim Scrollen den unteren Rand erreicht haben:
quelle
Hier ist ein Beispiel:
quelle
Wenn nicht alle Ihre Dokumentrollen ausgeführt werden, z. B. wenn Sie
div
innerhalb des Dokuments einen Bildlauf durchführen , funktionieren die oben genannten Lösungen ohne Anpassungen nicht. So überprüfen Sie, ob die Bildlaufleiste des Divs den unteren Rand erreicht hat:quelle
Die akzeptierte Antwort auf diese Frage hat ein Problem mit Chrom, wenn das Fenster auf einen Wert> 100% vergrößert wird. Hier ist der Code, der von Chrome-Entwicklern als Teil eines Fehlers empfohlen wurde, den ich auf demselben ausgelöst hatte.
Als Referenz:
Verwandte SO-Frage
Chrome Bug
quelle
Ich habe einige Zeit damit verbracht, eine nette Funktion zu finden, um eine Lösung zu finden. Am Ende ist dies meiner Meinung nach eine bessere Lösung, wenn mehrere Inhalte auf einer einzelnen Seite oder auf einer Website geladen werden.
Funktion:
Sie können die Funktion dann über das Fenster beim Scrollen aufrufen (Sie können sie beispielsweise auch an einen Klick usw. binden, wie ich es auch tue, daher die Funktion):
Benutzen:
Dieser Ansatz sollte auch zum Scrollen von Divs usw. funktionieren. Ich hoffe, er hilft. In der obigen Frage können Sie diesen Ansatz verwenden, um Ihre Inhalte in Abschnitte zu laden, möglicherweise alle Bilddaten anzuhängen und damit zu dribbeln, anstatt Massen-Feeds.
Ich habe diesen Ansatz verwendet, um den Overhead auf https://www.taxformcalculator.com zu reduzieren . Es ist der Trick gestorben, wenn Sie sich die Site ansehen und Elemente usw. untersuchen, können Sie die Auswirkungen auf das Laden von Seiten in Chrome sehen (als Beispiel).
quelle
Verbesserung der @ deepakssn-Antwort. Es besteht die Möglichkeit, dass die Daten etwas geladen werden sollen, bevor wir tatsächlich nach unten scrollen .
[var scrollLoad] wird verwendet, um den Anruf zu blockieren, bis neue Daten angehängt werden.
Hoffe das hilft.
quelle
Bei Ihrer Frage geht es speziell um das Laden von Daten, wenn ein Div angezeigt wird , und nicht, wenn der Benutzer das Ende der Seite erreicht.
Hier ist die beste Antwort auf Ihre Frage: https://stackoverflow.com/a/33979503/3024226
quelle