webForumDet fria alternativet

Har ett problem med en jqueryfunktion - ni kanske kan hjälpa mig?

JavaScript

36 svar · 1 182 visningar · startad av bikic

Medlem sedan juni 2006261 inlägg
Frågan#1

Jag håller på att skapa min portfolio - väldigt enkel men pedagogisk och korrekt. Jag använder mig först av en slide där man kan navigera med både knappar och mousewheel. När man klickar upp ett projekt så visar den projektet med både text och fler bilder av projektet.

www.dekom.se

So far so good...

Till mitt problem. När man klickar upp ett projekt för att läsa mer så har du text till vänster och en slideshow till höger. Om du navigerar i slideshowen och sedan väljer att stänga ner projektet när du står på bild 2 i slideshowen så händer något konstigt. Om jag direkt väljer att klicka upp projektet igen så blir det fel i slideshowen - se själv för att förstå mitt problem.

Jag undrar nu vad detta kan bero på och vad vi kan göra åt det.

Tack på förhand!

Vill tillägga att bara bild 1 och 2 fungerar vid sliden på "startsidan".

Medlem sedan juni 2006261 inlägg
#2

En lösning är om man kan "resetta" slideshowen när man klickat ner ett projekt.


$('.back').click(function(){
	$('.explore-portfolio').fadeOut(600,
		function(){
			$('#portfolio').fadeIn(600);

			// RESET SLIDESHOW

		}
	);	
	return false;
});
Medlem sedan juni 20019 519 inlägg
#3

kan ju vara att den köar upp dina animationer : http://api.jquery.com/stop/ kan hjälpa dig kanske?

Medlem sedan juni 2006261 inlägg
#4

Verkade inte fungera med ditt förslag där Voigt. Hmm...

Detta problem uppstår så fort man stänger ner projektet och är vid bild 2 i slideshowen. Fungerar utmärkt så länge jag står på bild 1.

Märkligt i alla fall..

Medlem sedan juni 20019 519 inlägg
#5

bikic skrev:

Märkligt i alla fall..

Förmodligen inte, jquery skriptet kör nog korrekt, även om den kanske inte gör vad du vill att den skall göra.

$(".loopedSlider").loopedSlider({});

körs varje gång, vilket känns överflödigt, lägg den utanför dina click event, då innehållet finns på din html sida, så att triggar den för varje click känns överflödigt.

// Hover Zoom Portfolio
	$(".loopedSlider").loopedSlider();

	$("#portfolio li").hover(
		function(){
			$(this).find("img").fadeTo(360,0.30);
		},
		function(){
			$(this).find("img").fadeTo(360,1);
	});
	
	var click = function ( e ) {
		var id = this.id.split("-")[1]; //gets p01
		$("#"+ id).fadeIn( 600 );
	}

	$('#portfolio').find("li a").click(click);

	$('.back').click(function(){
		$('.explore-portfolio').fadeOut(600,
			function(){
				$('#portfolio').fadeIn(600);
			}
		);	
		return false;
	});

kanske fungera bättre?

Medlem sedan juni 2006261 inlägg
#6
$(".loopedSlider").loopedSlider({});

Måste triggas vid varje click då jag har flera unika projekt och den ska bara ladda en åt gången och inte alla samtidigt. Problemet ligger i alla fall inte i det, jag har testat sedan tidigare.

Jag tror i alla fall på att jag måste få $(".loopedSlider").loopedSlider({}); att återgå till första bilden när man klickar på "back". Hur jag ska lösa det återstår att se.

Tack för hjälpen Voigt - uppskattas alltid!

Medlem sedan juni 20019 519 inlägg
#7

Måste triggas vid varje click då jag har flera unika projekt och den ska bara ladda en åt gången och inte alla samtidigt.

du måste nog kolla lite hur jquery fungera, för din kod kör alla .loopedSlider i ditt aktuella dokument, så det stämmer inte alls som du påstå(om de inte har i plug:inet sagt att this måste vara :visible).

Vid .back click:et så är det väl bara att kolla API värderna på loopedSlider och se om det finns möjlighet att sätta index:et till 0 igen, annars tycker jag inte det är nödvändigt att den skall "gå till första bilden". Om du har tryckt runt och råkar stänga ner din portfolio-info-box så kommer jag i alla fall ihåg den sista bilden jag såg jämför om man har kollat igenom 20 bilder.

Medlem sedan juni 2006261 inlägg
#8

Voigt, kan du inte visa mig hur du hade gjort då - är grymt intresserad och tackar för alla tips och idéer jag får.

Medlem sedan juni 20019 519 inlägg
#9

koden jag postade ovan är vad jag hade gjort vid första inblick på din kod.

Medlem sedan juni 20019 519 inlägg
#10

utan att testat koden:

$(document).ready(function() {		
	var
		carouselOptions = {
			width: 955,
			scroll: {
				items: 1,
				duration: 500,
				pauseOnHover: true,
				mousewheel: true
			},
			auto: {
				play: false,
				pauseDuration: 5000,
				delay: 2000
			},
			items: {
				visible: 4
			},
			prev: {	
				button	: "#portfolio-prev",
				key		: "left"
			},
			next : { 
				button	: "#portfolio-next",
				key		: "right"
			}
		},
		portfolioHover = {
			in: function(){
				$(this).find("img").fadeTo(360,0.30);
			},
			out: function() {
				$(this).find("img").fadeTo(360,1); 
			}
		},
		openPortoflio = function( e ) {
			var id = this.id.split("-")[1]; //gets p01
			$("#"+ id).fadeIn( 600 );
			e.preventDefault();
		};

	/** DOM ************/
	// Portfolio
	$("#portfolio ul").carouFredSel(carouselOptions)
		.find("li")
			.hover(portfolioHover.in, portfolioHover.out)
				.find("a")
					.click(openPortoflio);
	// Back button...
	$('.back').click(function(){
		$('.explore-portfolio').fadeOut(600,function(){$('#portfolio').fadeIn(600);});	
		return false;
	});
	//Image Sliders...
	$(".loopedSlider").loopedSlider();

});
Medlem sedan juni 2006261 inlägg
#11

Tack för hjälpen! Testade dina grejer och ser allt du gjort - förstår lite mer nu. Men nu går inte slidern igång alls. Något tips på varför? Jag har i alla fall lagt upp allt på dekom.se med din kod så kan du se vad som är fel.

Tack på förhand!

Medlem sedan juni 20019 519 inlägg
#12

$(".loopedSlider").loopedSlider is not a function
[Break on this error] $(".loopedSlider").loopedSlider();

få jag på din sida.

Medlem sedan juni 2006261 inlägg
#13

Använder du Firebug då eller?

Jag hittar inga fel - men vad är felet då? Scriptet har ju fungerat tidigare.

Medlem sedan juni 20019 519 inlägg
#14

jag försöker köra $(".loopedSlider").loopedSlider(); i firebug vilket ge mig felmeddelandet, men den ge mig felmeddelandet när jag laddar din sida.

Medlem sedan juni 2006261 inlägg
#15

Kan man lösa det på annat sätt än att använda just loopedSlider? Jag testade precis med nivoslider och allt fungerar tills dess att jag placerar divven för slidern inuti mitt projekt - då fungerar inte själva effekterna med slider fungerar som den ska. Den byter bilder utan effekt bara. Men så fort jag placerar den utanför projektdivven så fungerar det med alla effekter.

http://nivo.dev7studios.com

http://www.dekom.se

Medlem sedan juni 20019 519 inlägg
#16

problemet är ju bara att js plugin:et laddas inte in, jag gillar inte att man kör document.write för att infoga js, om jag ta källkoden från pluginet och kör den så fungera skriptet som det är.

Medlem sedan juni 2006261 inlägg
#17

Nu har jag tagit bort alla JS-filer från custom-filen och lagt de direkt under default.htm - felet kvarstår. Det verkar har med inladdningen av pluginet att göra.

Kan man på något sätt göra att nivoslider laddas in samtidigt som man kör .click(openPortoflio);?

Medlem sedan juni 2006261 inlägg
#18

Hittade en lösning som fungerar perfekt nu.


openPortoflio = function(e) {
	var id = this.id.split("-")[1];
	$("#"+ id).fadeIn(600);
	$("#"+ id + "-slider").nivoSlider({
		effect:'fade',
		animSpeed:150,
		manualAdvance:true,
		directionNav:true, 
		pauseOnHover:true
	});
	e.preventDefault();
};
Medlem sedan juni 20019 519 inlägg
#19

Gillar inte att du triggar plugin på varje click, eftersom elementen finns på din sida redan känns som ett onödigt steg

Medlem sedan juni 2006261 inlägg
#20

Men det fungerar ju inte annars.

267 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
116 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)