2010-04-13 5 views
0

Sous $(document).ready(function(), j'ai le code suivant:Le diaporama Jquery personnalisé ne veut pas être réinitialisé?

num = $("#mainContentCategoryLinksWrapper > div").size(); 

Cela rend num égale à la longueur des enfants de #mainContentCategoryLinksWrapper. À l'heure actuelle, ce qui équivaut à 4. Au-dessus du $(document).ready(function( J'ai ceci:

var timesRun = 0; 

    function slideshow(){ 


     if(timesRun < num){ 
        $(".arrowIn").stop().animate({color: "#a12324", textIndent: "30px", backgroundPosition: '0px 0px'}, 100, function(){ //the first child in the series has a class of "arrowIn" 

                     $(".arrowIn").next().addClass("replaceMe"); //Adds the ".replaceMe" placeholder the the next element. 
                      $(".arrowIn").removeClass("arrowIn"); //Deletes the class on the current element 
                      $(".replaceMe").addClass("arrowIn").removeClass("replaceMe"); //reassigns ".arrowIn" over ".replaceMe"  
                      timesRun = timesRun + 1; //increases number of times run 

                                     }).prev().animate({color: "#000000", textIndent: "25px", backgroundPosition: '0px -25px'}, {duration: 50}); //puts the previous element back to it's original position 

         }else{ 

          timesRun = 0; 
          $(".arrowIn").removeClass("arrowIn"); 
          $("#mainContentCategoryLinksWrapper:first-child").addClass("arrowIn"); //this is supposed to reset timesRun, and set the first child in the series back to the original ".arrowIn" 
       } 




    } 

setInterval('slideshow()', 1000); 

Voici donc le rôle du code:

1) tend le premier dans la série de 4 (# 1) timesRun = 1 2) Anime le second de la série de 4 (# 2) timesRun = 2 3) Anime le troisième de la série de 4 (# 3) timesRun = 3 4) Anime le quatrième de la série de 4 (# 4) timesRun = 4 5) timesRun est maintenant plus long que num. Réinitialisez les noms de classe à l'original .arrowIn, réglez timesRun sur 0.

Toutefois, lorsque le diaporama() est réexécuté, il ne recommence pas.

Des idées? Voir www.raceramps.com/v3 pour un exemple.

+0

Je mis à jour ma réponse – Kronass

Répondre

0

il me semble que vous avez déclaré la fonction à l'intérieur du bloc $(document).ready(). si cela ne fonctionnera sûrement pas, car le cycle de vie de la fonction est limité au bloc "prêt" et à la fin les déclarations ne seront visibles à aucun autre élément en dehors du bloc "prêt" alors ce que vous devez faire est déclarer la fonction en dehors du « prêt » comme suit

function slideshow(){ 
// your stuff 
} 
$(document).ready(
function() {setInterval('slideshow()', 1000); 
} 
) 

Mise à jour: essayer de faire le sélecteur de ligne de réinitialisation même que le sélecteur de taille get, comme celui-ci

$("#mainContentCategoryLinksWrapper>div:first-child").addClass("arrowIn"); 
+0

le seul code qui est dans $ (document). ready() est le 'num = $ (" # mainContentCategor yLinksWrapper> div "). size();'. Le reste est au dessus. – Jared