how to loop a jquery div animation?

Deadly 提交于 2019-11-30 05:11:39

问题


I’m trying to implement a jQuery function with an infinite loop to animate a div. I can’t figure out how to do it. This is my code:

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

回答1:


put the code that does the full animation into a function, then pass that function as the callback param to the last animation. Something like...

$(document).ready(function() {   
    function animateDivers() {
        $('#divers').animate(
            {'margin-top':'90px'}
            ,6000
        )
        .animate(
            {'margin-top':'40px'}
            ,6000
            ,animateDivers //callback the function, to restart animation cycle
        ); 
    }

    animateDivers(); //call, to start the animation
}); 



回答2:


$(document).ready(function() {
    function ani() {
        $('#divers').animate({
               'margin-top':'90px'
            },6000).animate({
               'margin-top':'40px'
           },6000, ani); //call the function again in the callback
        }); 
    }); 
    ani();
}); 



回答3:


use the .animate() callback to 'recall' your function:

jsBin demo

$(function() {


  function loop(){
   $('#divers')
     .animate({marginTop:90},6000)
     .animate({marginTop:40},6000, loop); // callback
  }

  loop(); // call this wherever you want


}); 



回答4:


Using setInterval is the way to go. Too much recursion will just get you "Stack Overflow" :-) "Uncaught RangeError: Maximum call stack size exceeded"




回答5:


The animate() function has an option to take a function to call when the animation ends. You could just do the same call, and voila.




回答6:


You can also set the set interval function specifying which method to call at what interval

$(function () { setInterval(fnName, 6000); });


来源:https://stackoverflow.com/questions/13367036/how-to-loop-a-jquery-div-animation

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!