首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何循环此jQuery动画

如何循环此jQuery动画
EN

Stack Overflow用户
提问于 2015-01-29 22:34:48
回答 4查看 57关注 0票数 0

我在上千个教程之后创建了这个jQuery脚本,并且只走了这么远,当它到达最后一张幻灯片时它就冻结了,我怎么能循环它呢

代码语言:javascript
复制
$(document).ready(function(){
    $('.slide').hide();
    $('.slide-1').fadeIn('slow').delay(2000).fadeOut('slow',function(){
        $('.slide-2').fadeIn('slow').delay(2000).fadeOut('slow', function(){
            $('.slide-3').fadeIn('slow').delay(2000).fadeOut('slow',function(){
                $('.slide-4').fadeIn('slow').delay(2000).fadeOut('slow');
            });
        });
    });
}); 
EN

回答 4

Stack Overflow用户

发布于 2015-01-29 22:39:37

将您的动画放入一个函数中,当您到达最后一步时,从其自身内部再次调用该函数。这叫做递归。

代码语言:javascript
复制
function animate()
{
   $('.slide').hide();
    $('.slide-1').fadeIn('slow').delay(2000).fadeOut('slow',function(){
        $('.slide-2').fadeIn('slow').delay(2000).fadeOut('slow', function(){
            $('.slide-3').fadeIn('slow').delay(2000).fadeOut('slow',function(){
                $('.slide-4').fadeIn('slow').delay(2000).fadeOut('slow',animate);

            });
        });
    }); 
}
$(document).ready(function(){
    animate();
}); 

注意:你可能想微调一下在哪里会发生什么。

票数 0
EN

Stack Overflow用户

发布于 2015-01-29 22:41:55

它可能会锁定你的渲染线程,所以尝试这样做: setTimeout将在不锁定ui的情况下执行工作,这是递归的-适用于幻灯片1到幻灯片4,然后再次从1开始

代码语言:javascript
复制
var slides = [".slide-1",".slide-2",".slide-3",".slide-4"];

function slide(id){
    $(slides[id]).fadeIn('slow').delay(2000).fadeOut('slow', function(){
        slide(id%slides.length);
    });
}

$(function(){
    $('.slide').hide();
    setTimeout(function() {
        slide(1);
    }, 0);
}); 
票数 0
EN

Stack Overflow用户

发布于 2015-01-29 22:47:04

通过保存幻灯片数组并只使用一次fadeIn/fadeOut代码,可以简化此代码:

代码语言:javascript
复制
$('.slide').hide();
var slides = [".slide-1",".slide-2",".slide-3",".slide-4"];

(function next(i){
     var slide = slides[i%slides.length];
    $(slide).fadeIn('slow').delay(2000).fadeOut('slow',function(){
        next(i+1);
    });
})(0)
代码语言:javascript
复制
.slide{
    width:100px;
    height:100px
}

.slide-1{
 background-color:red
}
.slide-2{
 background-color:blue
}
.slide-3{
 background-color:green
}
.slide-4{
 background-color:yellow
}
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="slide-1 slide"></div>
<div class="slide-2 slide"></div>
<div class="slide-3 slide"></div>
<div class="slide-4 slide"></div>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28217263

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档