2010-10-01 20 views
0

Je travaille sur un didacticiel de curseur d'image jQuery et je les ai perdus au point où ils ont placé une fonction de rappel sur l'option .animate() - le rappel est la removeClass. Pourquoi en ai-je besoin? Si je retire la fonction de rappel, le curseur cesse de fonctionner.Pourquoi ai-je besoin de cette fonction de rappel pour fonctionner correctement?

function slideSwitch() { var $active = $('#slideshow IMG.active'); var $next = $active.next();

$active.addClass('last-active'); 

$next.css({opacity: 0.0}) 
    .addClass('active') 
    .animate({opacity: 1.0}, 1000, function() { 
     $active.removeClass('active last-active'); 
    }); 

}

$(function() { setInterval("slideSwitch()", 5000); });

Voici comment le curseur fonctionne:

Fondamentalement, il y a 3 images positionnées (absolument) au-dessus de l'autre. La première image reçoit la classe "active" avec un index z élevé, elle apparaît donc en haut.

Après 5 secondes, le code trouve ensuite l'image suivante et rend la classe "active", et rend l'original ".last-active", qui a un z-index légèrement inférieur. Le nouveau ".active" est donné une opacité de 0.0 mais lentement animée à 1.0 dans une seconde.

C'est en fait un curseur assez simple. Je comprends tout le reste sauf pourquoi j'ai besoin de cette fonction de rappel qui supprime les classes "dernier-actif" et "actif" une fois l'animation terminée. Est-ce que ".active" n'a pas besoin de rester ".active" pour être au top?

Il pourrait vous aider à m'aider si vous avez vu le tutoriel vous-même. Il peut être trouvé à: http://jonraasch.com/blog/a-simple-jquery-slideshow

Merci d'avance!

Répondre

1

Ce rappel supprime les classes de la précédemment diapositive active ($active).

$next devient la nouvelle diapositive active (et obtient la classe de la déclaration juste avant animate).

Si le code n'a pas supprimé la classe de $active il y aurait deux coulissé actifs es après tout est dit et fait.

+0

Ahh, je comprends maintenant. Seul $ active obtient ses classes supprimées, pas $ next. Merci beaucoup pour votre aide, Jeff! – izolate

1

Le rappel est appelé après l'animation (modification de la valeur d'opacité). Par conséquent, si vous supprimez le rappel et l'ajoutez directement après l'animation, il supprimera les classes avant que l'animation ne soit terminée.

Sinon, si vous supprimez le rappel complètement, vous avez perdu le moyen de supprimer les classes (bien sûr XD ")

+0

Mais pourquoi les classes doivent-elles être supprimées? Je comprends si .last-active va mais .active doit être là, non? – izolate

+0

Je pense que c'est parce que la fonction est appelée toutes les 5 secondes. Si vous ne supprimez pas la classe active, l'effet de fondu sur tous les éléments activés une fois se produit toutes les 5 secondes. Je pense qu'il devrait y avoir une fonction pour définir les éléments à activer. – PeterWong

+0

Ok, j'ai compris. Merci pour votre aide aussi Peter. – izolate