"Callback" bei Lytebox.end

DeluXe

Funkjoker
Tag zusammen,

ich bin gerade dabei eine (weitere ;) ) jQuery Galerie zu basteln.

jQuery ist an dieser Stelle jedoch auch gar nicht das Problem, die Lytebox ist es.
Und zwar soll das derzeit angezeigt Bild bei Klick in der Lytebox geöffnet werden und das durchblättern der Gallery gestoppt werden.
So weit auch kein Problem.

Jedoch wäre es nett, wenn beim schließen der Lytebox das Blättern weiter gehen würde.

Die Funktion, welche für das schließen verantwortlich ist, nennt sich "LyteBox.prototype.end". Diese kann ich jedoch weder überschreiben (dadurch könnten andere Galerien auf der Seite die jQuery Galerie beeinflussen) , noch hat sie eine Callback-Funktion.

Hat irgendjemand eine Idee, wie man das Problem noch angehen könnte?

Gestartet wird die Lytebox derzeit so:
Code:
jQuery( this, i ).bind( 'click', function(){//inhalt eines jQuery).each(), welches das onclick event anpasst
	jQuery.vjf.stop();// haelt die jQuery Galerie an
	myLytebox.start( this, false, false );// oeffnet die Lytebox
});

Mir fehlt da jeglich Idee, was man da noch machen könnte....

Danke auf jeden Fall schonmal.
 
Zuletzt bearbeitet:
Hi,

du könntest die start-Methode der Lytebox um einen Parameter erweitern. Dieser dient dazu, festzustellen, ob beim Aufruf der end-Methode zusätzliche oder eigene Anweisungen ausgeführt werden sollen.

Dazu in der lytebox.js die start-Methode suchen und die Signatur wie folgt ändern:
Code:
LyteBox.prototype.start = function(imageLink, doSlide, doFrame, myEnd) {

Weiter unten in der gleichen Methode nach dieser Zeile suchen
Code:
this.doc.getElementById('lbClose').onclick = function() { myLytebox.end(); return false; }
und durch
Code:
  if(myEnd)
    this.doc.getElementById('lbClose').onclick = function() { myLytebox.end(1); return false; }
  else
    this.doc.getElementById('lbClose').onclick = function() { myLytebox.end(); return false; }
ersetzen.

Nun muss noch die end-Methode entsprechend modifiziert werden. Ich zeige hier nur das prinzipielle Vorgehen. Die eigentlichen Anweisungen zum Schliessen lasse ich weg.
Code:
LyteBox.prototype.end = function(caller) {
  if((LyteBox.prototype.end.arguments[0] !== undefined) && (LyteBox.prototype.end.arguments[0] == 1)){
    // TODO: Deine gewünschten Operationen + evtl. bisherige Anweisungen zum Schliessen
  }else{
    // TODO: Bisherige Anweisungen zum Schliessen
  }
};

Aufgerufen wird das Ganze dann mit true im vierten Argument, um eigene Anweisungen auszuführen.
Code:
myLytebox.start( this, false, false, true); // oeffnet die Lytebox und führt zusätzliche Anweisungen beim Schliessen aus

Vielleicht hilft dir das weiter.

Ciao
Quaese
 
Vielen, vielen Dank für deine Idee!
Meine jetzige Lösung hat zwar absolut gar nichts mit dieser zu tun, allerdings kam mir diese erst beim anpassen der Lytebox und dem durchstöbern des Codes.

Und zwar muss man die obigen Zeilen einfach wie folgt anpassen:
Code:
jQuery( this, i ).bind( 'click', function(){
	jQuery.vjf.stop();
	myLytebox.start( this, false, false );
	jQuery( '#lbMain, #lbClose' ).bind( 'click', function() {
		jQuery.vjf.interval();
	});
});

Da die Events der Lytebox bei jedem Aufruf neu initialisiert werden, werden somit auch nicht die anderen Galerien beeinflusst, bzw. beeinflussen diese auch nicht die jQuery Galerie.

Bis jetzt ist mir zumindest noch kein Fehlverhalten aufgefallen. :)
Wenn dem so bleibt und ich es gleich nochmal im IE erfolgreich teste, wäre das wirklich eine extrem einfache Lösung.
So einfach, das ich derzeit noch irgendwelche Nebenwirkung erwarte. ;)
 
Zuletzt bearbeitet:
So läuft es nun ohne Probleme. :)

Code:
$( '#lbMain, #lbOverlay, #lbClose' ).bind( 'click',  function() {
	myLytebox.end();
	// eigener code
});
$( '#lbNext, #lbPrev' ).bind( 'click',  function() 
	// und fuer die navigations-links den eigenen code wieder entfernen... ;)
	return false;
});
 

Neue Beiträge

Zurück