2012-12-29 132 views
1

我想要一個背景圖像淡出。jQuery函數循環改變背景圖像崩潰firefox

我有兩個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(); 

      }); 

回答

1

你將不得不使用該函數的回調

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

Hmnn它不會崩潰,但它只有在這裏http://jsfiddle.net/循環一次 –

+0

作品gy6CZ /我增加了'setTimeout'來補償上次延遲丟失 – charlietfl

+1

不要調用'$('#back1')'這麼多次。您每次都在搜索DOM以找到它..接收動畫片和/或緩存選擇器 – charlietfl