jquery循环函数,重置样式,循环再次

时间:2013-06-08 01:39:01

标签: jquery loops jquery-animate reset

我要做的是为html元素的“top”位置设置动画,然后在函数运行后,重置样式并开始循环。

我当然不是专业人士。我确信有更好的方法可以做到这一点,而且我只能通过将我找到的各种“教程”拼凑在一起来实现这一目标。

我正在制作动画的元素包含在with overflow:hidden。

这是迄今为止我能够获得的脚本:

$(function(){
    function loop(n) {
    if(n > 0)
    {
      setTimeout(function(){
      $("#target").animate({'top': '-=44px' },"slow", loop(n-1));
      }, 3000);
    }
    }
    loop(15);
});

我想要的是在运行之后,我希望它重置#target元素的“top”属性,然后重新开始(无限制)。

非常感谢任何帮助,我意识到我可能从一开始就会出现这种错误,所以任何建议都会很棒!

谢谢!

编辑:整理一个jsFiddle以显示我到目前为止所获得的内容:http://jsfiddle.net/E7mTR/

1 个答案:

答案 0 :(得分:0)

尝试

(function($) {

    $(document).ready(function(){

        $(function(){
            function loop(n) {
                if(n <= 0){
                    setTimeout(function(){
                        $(".wrapper ul").animate({'top': '0' },"fast", function(){
                            loop(15)
                        });
                    }, 300);
                }else {
                    setTimeout(function(){
                        $(".wrapper ul").animate({'top': '-=44px' },"fast", function(){
                            loop(n-1)
                        });
                    }, 300);
                }
            }
            loop(15);
        });

    });
})(jQuery);

演示:Fiddle

可以使用

之类的东西清理代码
jQuery(function($){
    var $ul = $(".wrapper ul");
    function animate(n, top) {
        $ul.delay(300).animate({'top': top },"fast", function(){
            loop(n-1)
        });
    }
    function loop(n){
        if(n <= 0) {
            animate(15, '0');
        } else {
            animate(n, '-=44px');
        }
    }
    loop(15)
})

演示:Fiddle