Javascript jQuery设置超时问题
我有一个简单的函数,它可以通过交叉淡入来设置一组图像的动画。一个简单的横幅旋转。我设置了该函数,以便调用Javascript jQuery设置超时问题,javascript,jquery,settimeout,Javascript,Jquery,Settimeout,我有一个简单的函数,它可以通过交叉淡入来设置一组图像的动画。一个简单的横幅旋转。我设置了该函数,以便调用animateSlideshow(“play”)它应该设置超时并开始制作动画,通过调用animateSlideshow(“stop”)它应该停止 但是,当我调用stop时,动画会再次出现。这一额外动画的原因是什么?我该如何处理 这将调用底部的函数 function prevSlide(e){ if(curHashIndex !== 0){ $(prevBtn).of
animateSlideshow(“play”)
它应该设置超时并开始制作动画,通过调用animateSlideshow(“stop”)
它应该停止
但是,当我调用stop时,动画会再次出现。这一额外动画的原因是什么?我该如何处理
这将调用底部的函数
function prevSlide(e){
if(curHashIndex !== 0){
$(prevBtn).off();
// Stop the current slideshow
animateSlideshow("stop");
// Reset the current slideshow
$("li.active .rightSlide > li").fadeOut(600).eq(0).fadeIn(600).addClass("actvImg");
$(".rightSlides").animate({
"left" : '+=345'
}, 600, function(){
$(prevBtn).on('click', prevSlide);
});
$(".leftSlides").animate({
"left" : '+=417'
}, 600);
// Activate the new slide
$(".rightSlides li.active").removeClass("active").prev().addClass("active");
activeSlide = $(".rightSlides li.active");
total = $(".rightSlides li.active .rightSlide > li").length;
// Start slideshow on the new slide
var delay = setTimeout(animateSlideshow("play"), 10000);
updateHash();
}
}
function animateSlideshow(action){
if(action === "play"){
$(activeSlide).data('animateSlideshow',
setTimeout(function(){
if( $(actvImg).index() === total - 1 ){
$(actvImg).fadeOut(animationSpeed).removeClass("actvImg").siblings().eq(0).fadeIn(animationSpeed).addClass("actvImg");
}else{
$(actvImg).fadeOut(animationSpeed).removeClass("actvImg").next().fadeIn(animationSpeed).addClass("actvImg");
}
actvImg = $(".rightSlides li.active .rightSlide > li.actvImg");
actvImgIndx = $(actvImg).index();
updateBreadcrumbs();
animateSlideshow("play")
}, animationTimeout)
);
}else{
clearTimeout($(activeSlide).data('animateSlideshow'));
};
};
您应该使用setInterval()/clearInterval(),而不是使用setTimeout()调用函数
您应该使用setInterval()/clearInterval(),而不是使用setTimeout()调用函数
我不知道为什么它会失败,但我尝试了一个类似的演示,它为我工作 这里
此外,我还用于停止当前动画。如果要停止该对象上的当前动画,可以使用它。我不知道为什么它会失败,但我尝试了一个类似的演示,它对我有效 这里
此外,我还用于停止当前动画。如果您想停止该对象上的当前动画,可以使用它。事实上,它对我产生了相同的结果。我最初编写的函数带有间隔。它至少可以防止您使用setTimeout()重新绑定数据-我们可能需要查看调用此函数的内容,或者知道是否存在此问题出现在某个浏览器中。这个函数应该能像预期的那样工作。我用调用函数更新了我的第一篇文章。我找到了它,有一个变量定义,它停留的时间比它应该的时间长。事实上,它对我产生了相同的结果。我最初编写的函数带有间隔。它至少可以防止您使用setTimeout()重新绑定数据-我们可能需要查看调用此函数的内容,或者知道是否存在此问题出现在某个浏览器中。此函数应能按预期工作。我用调用的函数更新了我的第一篇帖子。我发现了它,有一个变量定义存在的时间比它应该存在的时间长。一定是代码中的其他地方出错了。我将尝试添加stop。我的代码中的其他地方一定有错误。我将尝试添加停止。
function animateSlideshow(action){
if(action === "play"){
$(activeSlide).data('animateSlideshow',
setInterval(function(){
if( $(actvImg).index() === total - 1 ){
$(actvImg).fadeOut(animationSpeed).removeClass("actvImg").siblings().eq(0).fadeIn(animationSpeed).addClass("actvImg");
}else{
$(actvImg).fadeOut(animationSpeed).removeClass("actvImg").next().fadeIn(animationSpeed).addClass("actvImg");
}
actvImg = $(".rightSlides li.active .rightSlide > li.actvImg");
actvImgIndx = $(actvImg).index();
updateBreadcrumbs();
}, animationTimeout);
);
}else{
clearInterval($(activeSlide).data('animateSlideshow'));
};
};