1

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

我当然不是这方面的专家。我确信有更好的方法可以做到这一点,而且我只能通过拼凑我找到的各种“教程”来做到这一点。

我正在制作动画的元素包含在溢出:隐藏中。

这是我到目前为止能够获得的脚本:

$(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/

4

1 回答 1

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);

演示:小提琴

代码可以使用类似的东西进行清理

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)
})

演示:小提琴

于 2013-06-08T02:30:01.297 回答