JTL-Shop 4: AJAX events / hooks / bindings "contentLoaded"

Ein typisches Problem im Umgang mit AJAX ist die (re-)Initialisierung von Scripts auf den nachträglich geladenen Inhalt. Im JTL-Shop 4 stößt man darauf beispielsweise auf Kategorieübersichten bei der Seitennavigation.

Viele Systeme, viele Lösungen

Viele Frameworks / CMS-Systeme bieten hier Abhilfe durch die Bereitstellung eigener Logiken, um auf das Nachladen von Inhalten zu reagieren. Drupal nutzt hier beispielsweise den sehr klugen "behaviours", siehe z.B. https://www.lullabot.com/articles/understanding-javascript-behaviors-in-...

Die Lösung im JTL-Shop4: evo:contentLoaded

JTL nutzt im JTL-Shop ein Event, das nach dem Laden von AJAX-Inhalten getriggert wird. Es heißt "evo:contentLoaded". Auf dieses können sich Scripte via Event-Bindings registrieren, siehe z.B. http://api.jquery.com/on/.

Code-Beispiel:


$(document).on('evo:contentLoaded', function(){
alert('Diese Meldung erscheint wann immer ein Inhalt nachgeladen wurde!');
});

Verbesserungsmöglichkeiten

Schön wäre noch, wenn als Parameter der Funktion nur der neu geladene DOM-Teil geliefert würde. Leider ist dies aber derzeit noch nicht der Fall. Die Funktion wird ohne Argumente aufgerufen.
Zudem ist diese Option leider bisher kaum von JTL dokumentiert, ich konnte sie lediglich in einigen Diskussionen und im Quellcode finden, aber noch nicht im JTL Wiki. Solltet ihr sie entdecken, lasst es mich bitte wissen, dann ergänze ich hier einen Link.

Ich freue mich über einen Kommentar, wenn Euch dieser Beitrag geholfen hat.

Kommentare

Kommentar hinzufügen

Der Inhalt dieses Feldes wird nicht öffentlich zugänglich angezeigt. Wenn Sie ein zulässiges Avatar mit Ihrer E-Mail-Adresse verknüpft haben, wird dieses als Avatar verwendet.

Weitere Informationen über Formatierungsoptionen