Eu tenho um slider que funciona perfeitamente com oexceção de obter o disco para animar o slide correspondente. Acho que, como os slides mudam o número deles para o loop infinito, ele mexe com o modo como os botões do disco os selecionam. Se alguém tiver uma correção, por favor bifurque meu código.
http://codepen.io/Spiderian/pen/IKvah
Aqui está o código em questão:
discs.click(function(e)
{
console.log( slideAnimating );
var btnIndex = discs.index(this);
if(!slideAnimating && btnIndex !== slideNumber)
{
timerFunction.pause();
nextSlide = btnIndex;
changeSlide();
}
Respostas:
1 para resposta № 1Seu problema não está em discs.click, mas em changeSlide ().
Com esta edição, funcionará:
function changeSlide()
{
slideAnimating = true;
console.log( "slide out => " + slideNumber );
console.log( "slide IN => " + nextSlide + "n" );
currentDisk = nextSlide; // Edit #1
TweenMax.to( discs.eq(slideNumber), 1, {backgroundColor:"#ffffff", borderColor:"#f10000"});
TweenMax.to(slides[slideNumber], duration,
{
left:"-100%",
onComplete:function()
{
slideAnimating = false;
timerFunction.restart(true);
if( wrapper.hasClass( "mouse-over" ) )
{
timerFunction.pause();
}
TweenMax.set(this.target, {left:"100%"});
}
});
TweenMax.fromTo( discs.eq(currentDisk), 1, {backgroundColor:"#ffffff", borderColor:"#f10000"}, {backgroundColor:"#f10000", borderColor:"#ffffff"});
TweenMax.to(slides[nextSlide], duration,
{
left:"0%"
});
if( nextSlide < totalSlides -1 )
{
slideNumber = nextSlide;
nextSlide++;
}
else
{
slideNumber = nextSlide;
nextSlide = 0;
console.log("first slide!!");
}
}