如何使jquery无限重复循环

时间:2015-04-21 08:38:24

标签: javascript jquery setinterval

我试图在div中实现带有图像的jQuery infinte循环。我尝试用setInterval函数来做这件事,但问题是整个动画以3秒的延迟开始,而我想要实现的是动画在结束之后重复它自己3秒我也尝试在.fadeTo之后做一个回调函数,但它只是应用于第一个图像,而不是整个动画。

以下是代码:

setInterval(function(){
    $('#animation-text img').each(function(i) {
        $(this).delay((i++) * 500).fadeTo(70, 1);
    });
}, 3000);

这是jsfiddle:http://jsfiddle.net/cavoledeni/edo5vcnz/

有什么想法吗?

4 个答案:

答案 0 :(得分:2)

一旦图像淡入,则需要隐藏图像,然后才能工作。请检查以下小提琴

https://jsfiddle.net/Midhun52/zg40dgcs/

$(document).ready(function(){
var a=function(){
    $('#animation-text img').each(function(i) {
        $(this).delay((i++) * 100).fadeTo(900, 1);
    });
}


 var b=function(){
    $('#animation-text img').each(function(i) {
        $(this).hide()
    });
}
setInterval(a, 5000);
 setInterval(b, 8000);

});

答案 1 :(得分:1)

更新: Demo 2

function setIntervalAndExecute(fn, t) {
    fn();
    return (setInterval(fn, t));
}

$(document).ready(function () {
    setIntervalAndExecute(function () {
        var $this = $('#animation-text img');
        $this.css({'opacity': 0});
        $this.each(function (i) {
            $(this).delay((i++) * 500).fadeTo(70, 1);
        });
    }, 3000);


});

Demo

试试这个。它会立即启动并显示每个图像。显示所有图像(每个功能完成)后,我将type更改为0. typeopacity的另一个词。所以下次图像会被隐藏起来。

function setIntervalAndExecute(fn, t) {
    fn();
    return (setInterval(fn, t));
}

$(document).ready(function () {
    var type = 1;
    setIntervalAndExecute(function () {
        $('#animation-text img').each(function (i) {
            $(this).delay((i++) * 500).fadeTo(70, type);
        });
        type = (type + 1) % 2;
    }, 3000);


});

答案 2 :(得分:1)

尝试使用fadeOut()删除图片:



$(document).ready(function(){
    
    setInterval(function(){
        $('#animation-text img').each(function(i) {
            $(this).delay((i++) * 500).fadeTo(10,1);
        });
    }, 3000);
    setInterval(function(){
        $('#animation-text img').each(function(i) {
            $(this).delay((i++) * 500).fadeOut(10);
        });
    }, 8000);
});

  #animation-text { width: 100%; font-size: 0; border: 1px solid red; }
#animation-text img { opacity: 0; }

 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
 <div id="animation-text">
		<img src="http://lorempixel.com/g/70/70/" alt="">
		<img src="http://lorempixel.com/g/70/70/" alt="">
		<img src="http://lorempixel.com/g/70/70/" alt="">
</div>
&#13;
&#13;
&#13;

答案 3 :(得分:0)

将完整动画插入到函数中,然后将该函数作为回调传递给最后一个动画。示例 -

$(document).ready(function() {   
  function animateDivers() {
    $('#divers').animate({'margin-top':'90px'},6000).animate({'margin-  top':'40px'},6000, animateDivers); 
  }
  animateDivers();
}); 

您可以在此处找到更多详细信息 - how to loop a jquery div animation?