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;
});
36 svar · 1 182 visningar · startad av bikic
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.
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".
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;
});
kan ju vara att den köar upp dina animationer : http://api.jquery.com/stop/ kan hjälpa dig kanske?
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..
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?
$(".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!
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.
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.
koden jag postade ovan är vad jag hade gjort vid första inblick på din kod.
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();
});
$(".loopedSlider").loopedSlider is not a function
[Break on this error] $(".loopedSlider").loopedSlider();
få jag på din sida.
Använder du Firebug då eller?
Jag hittar inga fel - men vad är felet då? Scriptet har ju fungerat tidigare.
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.
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.
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.
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);?
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();
};
Gillar inte att du triggar plugin på varje click, eftersom elementen finns på din sida redan känns som ett onödigt steg
Men det fungerar ju inte annars.