Link funktioniert nur einmal?

nordi

Erfahrenes Mitglied
Hallo liebe Community,

ich habe ein komisches Problem. Ich benutze Awkward Showcase für meine Website. Dies ist ein Content-Slider http://www.awkwardgroup.com/sandbox/awkward-showcase-a-jquery-plugin/.

Auf meiner Seite (http://www.stokedesign.de/kunden/schlepuetz/) habe ich das Script so umgeschrieben, dass man durch die Funktion jQuery.fn.awShowcase.changeContent via Links innerhalb der Slidershow zu den verschiedenen Slides fahren kann. Normalerweise ist dies nur möglich über die Außennavigation.

Doch die Links haben einen komischen Fehler. Mit Safari/FireFox funktioniert es soweit, dass der Link nur einmal funktioniert. Klickt man beispielsweise auf der Startseite auf den Link "unzählig andere vor Ihnen" fährt der Slider zu den Referenzen. Klickt man wieder auf "Fit Concepts" (Slide1) und klickt erneut auf "unzählig andere vor Ihnen" hat der Link keine Funktionalität mehr. Woran liegt das? Schwer zu beschreiben das Problem ;)

Danke schonmal im voraus
 
Hallo CPoly,

auf welchen Link klickst du? Kommt die Fehlermeldung beim ersten Klick oder beim wiederholten Klick?
Habe die Funktion rausgenommen - hat aber keine Auswirkung..

Das komische ist auch, dass beispielsweise der Link, der nicht innerhalb der Slide-Container ist einwandfrei funktionieren. Oben rechts über der Slideshow neben dem XING-Icon habe ich den Brief mit Slide 4 verknüpft, mit der gleichen Funktion wie die Links innerhalb des Sliders. Innerhalb gibt es den Fehler, außerhalb nicht..
 
Zuletzt bearbeitet:
Hatte auf "unzählig andere vor Ihnen" geklickt, da tut sich jetzt aber gar nix mehr.

Bin leider gerade kurz angebunden und kann deshalb den Code nicht auseinander nehmen.
 
Mh, dank dir! Ich probier's weiter! Wenn du noch Zeit hast, wär ich dir sehr dankbar! Bin seit Tagen dran und find den Fehlerteufel nicht..
 
So, ich habe jetzt mal mit Meld (http://screenshots.debian.net/package/meld) deinen und den originalen Code verglichen. Was mir aufgefallen ist:

1. Wieso änderst du die Einstellungen im Plugin-Code selbst? Du kannst die Optionen alle als Parameter übergeben.

Javascript:
$("#showcase").awShowcase({
    content_height: 670,
    buttons: false,
    transition: 'vslide',
    thumbnails: true,
    dynamic_height: true
});


2. Du hast dir unnötig viel Arbeit gemacht, die Funktion überall umzubenennen. Eine Funktion kann auch zwei Namen haben, also hättest du nur eine einzige Zeile ändern müssen ;).

Javascript:
//vorher
function changeContent(id, direction) {

//nachher
var changeContent = jQuery.fn.awShowcase.changeContent = function(id, direction) {


3. Du hast die Funktion etwas ungünstig benannt. Denn "jQuery.fn.awShowcase" ist bereits eine Funktion und dieser fügst du eine Funktion als Eigenschaft hinzu. Das ist in JavaScript auf keinen Fall falsch oder schlecht (Eine Funktion hat ja ohnehin Funktionen wie z.b. call) aber ich würde das umbenennen.
Was ich daran aber als falsch einstufen würde ist, dass die Funktion nichts bei "jQuery.fn" zu suchen hat, weil dort nur Funktionen hingehören, die auf einem jQuery Objekt aufgerufen werden. Deine Funktion wird ja in keinem Kontext aufgerufen, also wäre einfach "jQuery.awShowcaseChangeContent" besser.

Javascript:
var changeContent = jQuery.awShowcaseChangeContent = function(id, direction) {



Jetzt kommen wir zu deinem eigentlichen Problem, dass damit ja noch nicht gelöst ist. Ich nehme an, irgendwo im Plugin Code ist ein Click-Handler definiert, der das zweite Klicken auf den Link blockiert. Ich suche gerade danach. Wollte den Rest schon mal loswerden.

Edit: Zwischenstand: mit "live('click')" funktioniert es. Also irgendwo wird der click-Handler wieder entfernt.
 
Zuletzt bearbeitet:
So, Problem gefunden. Mir gefällt der Plugin Code generell nicht, aber jetzt hab ich auch einen den Fehler gefunden, der dein Problem verursacht. Wenn du den Inhalt wechselst, entfernt das Plugin alle anderen Container aus dem Dokument! Natürlich gehen dadurch alle Event-Handler verloren...

Als Lösung für Links innerhalb der Container bleibt dir nur live. Links außerhalb machen keine Problem (deshalb funktioniert oben der Kontakt Button).

Also im Plugin-Code musst du nur eine einzige Zeile ändern (wie im anderen Post beschrieben) und dann folgenden Code benutzen.

Javascript:
$(document).ready(function() {
	$("#showcase").awShowcase({
		content_height: 670,
		buttons: false,
		transition: 'vslide',
		thumbnails: true,
		dynamic_height: true
	});
	
	$('.kontakt').click(function() {
		$.awShowcaseChangeContent(2);
	});
	
	$('.referenzen').live('click', function() {
		$.awShowcaseChangeContent(3);
	});
});
 

Neue Beiträge

Zurück