URL: https://www.overclockers.at/coding-stuff/jquery_ajax_214811/page_1 - zur Vollversion wechseln!
Hallo,
ackere gerade diverse jQuery Tuts durch. Eigentlich klappte das bisher ganz gut, doch jetzt hab ich ein Problem wo ich nicht mal weiß, was ich in Google eintippen könnte...
Es geht um folgende Seite:
http://ben.slezak.co.at/kames/light-0-0-0-0-.html
Im unteren Teil der Seite gibts Thumbnails, welche dann in einer Lightbox dargestellt werden.
Dazu verwende ich dies hier:
http://www.no-margin-for-errors.com.../documentation/
Soweit funktioniert dies ja auch.
Dann kommt noch eine 2te Funktion.
Die 2 Links "Maifest" und "Donauinselfest 2006" laden jeweils per $.get die jeweiligen Inhalte in das div.
Auch das funktioniert!
ABER: Die Lightbox funktioniert nur solange das Dokument "frisch" aufgerufen wurde und nicht wenn es per $.get verändert wurde.
d.h: Neu laden -->Alles funktioniert. Click auf "Maifest" oder "Donauinselfest 2006" --> die Lightbox funktioniert nicht mehr.
Leider weiß ich nicht genau was da alles im DOM passiert.
Die Lightbox klopft ihre Funktionalität ganz am Ende in alle <a href> mit rel="prettyPhoto":
Code: PHP<script type="text/javascript" charset="utf-8"> $(document).ready(function(){$("a[rel^='prettyPhoto']").prettyPhoto();}); </script>


in deiner $.get callback funktion einfach das $("a[rel^='prettyPhoto']").prettyPhoto(); aufrufen.
ist ja auch klar: du fügst neue elemente zu deinem dom tree hinzu die natürlich nix von deinem pretty photo wissen. mit dem aufruf werden einfach alle a elemente durchsucht die rel=prettyPhoto haben und es wird vermutlich ein onclick handler zu dem element hinzugefügt.
Vielen Dank! An das hatte ich auch schon gedacht, allerdings nicht mit dem gwünschten Erfolg hingekriegt.
Code: PHP<script type="text/javascript" charset="utf-8" language="JavaScript"> function show(id,ii) { $.get("media.php","wert="+id+"&index="+ii, function(text){ $("div#ajaxinhalt").fadeOut('fast',function(){$("div#ajaxinhalt").html(text).fadeIn('normal'); }); }); $("a[rel^='prettyPhoto']").prettyPhoto(); } </script>

Das $("a[rel^='prettyPhoto']").prettyPhoto(); muss in die die function() von $.get bzw. fadeOut in deinem Fall, nachdem .html(text) gesetzt wurde. Denn in deinem code wird $("a[rel^='prettyPhoto']").prettyPhoto(); aufgerufen bevor der ajax response in das html eingefügt wurde.
Code: PHP<script type="text/javascript" charset="utf-8" language="JavaScript"> function show(id,ii) { $.get("media.php","wert="+id+"&index="+ii,function(text) { $("div#ajaxinhalt").fadeOut('fast',function() { $("div#ajaxinhalt").html(text).fadeIn('normal'); $("a[rel^='prettyPhoto']").prettyPhoto(); }); }); } </script>
Vielen Dank,
leider klappts so auch nicht 
Das div wird zwar entladen, aber dann nicht mehr aufgefüllt. Lass ich die prettyPhoto-Zeile weg funktionerts wie gehabt. Hmm
Naja, es ist 3 in der Früh, Zeit zu schlafen 
Löse die Lightbox nun per API-Call
mittels Onclick direkt im href auf.Code: PHP$.prettyPhoto.open

overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2026