自定义Jquery幻灯片不想重置?

时间:2010-04-13 15:38:28

标签: javascript jquery

$(document).ready(function()下,我有以下代码:

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

这使num等于#mainContentCategoryLinksWrapper子项的长度。目前,这等于4.高于$(document).ready(function(我有这个:

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 );

以下是代码的作用:

1)动画系列中的第一个4(#1)次运算= 1 2)在4(#2)次乘以= 2的系列中动画第二个 3)动画系列中的第三个(#3)次运算= 3 4)动画系列中的第四个(#4)次运算= 4 5)timesRun现在长于num。将类名重置为原始的.arrowIn,将timesRun设置为0。

但是,重新播放幻灯片()时,它不会重新开始。

有什么想法吗?有关示例,请访问www.raceramps.com/v3。

1 个答案:

答案 0 :(得分:0)

在我看来,你在$(document).ready()块中声明了这个函数。 如果这样那么它肯定不会起作用,因为函数生命周期仅限于“就绪”块,当它完成时,声明对于“就绪”块之外的任何其他元素都不可见 所以你应该做的是在“就绪”之外声明这个函数,如下所示

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

更新: 尝试使重置行选择器与获取大小选择器相同,如此

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