jQuery函数循环更改背景图像崩溃firefox

时间:2012-12-29 01:58:01

标签: jquery jquery-animate

我希望背景图片能够淡出。

我有两个div在彼此之上,背景设置为图像。

在我的jQuery中,我定位一个div,然后将不透明度显示为零,显示另一个。然后我反过来。然而,这是有效的,但现在由于某种原因,这个无限循环崩溃了Firefox。

我该怎么做才能让它不崩溃?

             $(document).ready(function() {
                function change (){
                  $('#back1').animate({opacity:0}, {duration:3000});
                  $('#back1').delay(1000);
                  $('#back1').animate({opacity:1},  {duration:3000});
                  $('#back1').delay(1000);
                  change();

                }

                change();

            });

2 个答案:

答案 0 :(得分:5)

问题是您在动画完成之前调用change(),因此您正在创建竞争条件。动画是异步的。动画可以使用完整的回调。

试试这个:

function change (){
     $('#back1').animate({opacity:0}, {duration:3000}) 
                .delay(1000)
                .animate({opacity:1},  {duration:3000}, function(){
                      /* use complete callback of final animation to start sequeunce again*/
                      change();
                 });                  

}

答案 1 :(得分:1)

您必须使用函数的回调