Der Martin: Div für Div nachladen

Beitrag lesen

Hi,

welche Vorgehensweise empfiehlt sich, wenn ich DIVs einer Webseite nacheinander laden möchte, also DIV2 wird geladen, wenn DIV1 vollständig geladen ist und DIV3 wird geladen, wenn DIV2 vollständig geladen ist?

Meine bisherige Idee ist, DIV1 ganz normal über Jquery "load" zu füllen und über den complete-callback dann das Füllen des DIV2 zu veranlassen usw.

$( "#DIV1" ).load( "ajax/test.html", function() {
    // Und hier sol dann DIV2 nachgeladen werden
});
  1. Ist das die sinnvollste Methode?

ob es die sinnvollste Methode ist, kann ich nicht sagen, weil ich mir nicht sämtliche Alternativen vorstellen kann. Es ist zumindet eine Möglichkeit, und sicher nicht die schlechteste.

Was mich viel mehr beschäftigt, ist die Frage nach der Sinnhaftigkeit des Vorhabens an sich. Warum sollte man den Ladevorgang auf diese Weise hinauszögern und ein Schritt-für-Schritt-Laden erzwingen? Internet-Nutzer sind meistens ungeduldig; wenn eine Seite bis zum Fertigladen merklich Zeit braucht, sind viele schon wieder weg. Daher halte ich dein Vorhaben schon im Ansatz nicht für schlau.

  1. Falls ja, kann ich das Ganze vielleicht als allgemeine Funktion ausgliedern und aufrufen?

Denkbar, aber knifflig. Immerhin hast du da eine Art Rekursion. Mit nur drei Elementen mag die noch einigermaßen übersichtlich sein - aber wenn es mehr wird, solltest du dir eine schlaue Datenstruktur ausdenken, mit der du das organisierst. Denkbar wäre ein Array aus Objekten, von denen jedes den Ressourcennamen für das nächste Nachladen und die ID des Elements enthält, das neu befüllt werden soll. Bei jedem Aufruf von load() entfernst du den aktuell bearbeiteten Array-Eintrag, bis du mit array.length==0 eine Abbruchbedingung hast.
Überlege dir auch, was du machen willst, wenn bei einem Ladevorgang mal ein Fehler auftritt.

So long,
 Martin

--
Es gibt eine Theorie, die besagt, dass das Universum augenblicklich durch etwas noch Komplizierteres und Verrücktes ersetzt wird, sobald jemand herausfindet, wie es wirklich funktioniert. Es gibt eine weitere Theorie, derzufolge das bereits geschehen ist.
- (frei übersetzt nach Douglas Adams)