在$(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。
答案 0 :(得分:0)
在我看来,你在$(document).ready()
块中声明了这个函数。
如果这样那么它肯定不会起作用,因为函数生命周期仅限于“就绪”块,当它完成时,声明对于“就绪”块之外的任何其他元素都不可见
所以你应该做的是在“就绪”之外声明这个函数,如下所示
function slideshow(){
// your stuff
}
$(document).ready(
function () {setInterval( 'slideshow()', 1000 );
}
)
更新: 尝试使重置行选择器与获取大小选择器相同,如此
$("#mainContentCategoryLinksWrapper>div:first-child").addClass("arrowIn");