2014-03-26 100 views
0

我試圖用jQuery製作心跳動畫,但它有一些行爲,我不明白。jQuery心跳動畫崩潰

function pulse() { 
    var target = $('body'); 

    target.animate({ 
     'font-size': '100.2%', 
      'background-size': '230%' 
    }, 200).delay(1600) 
     .animate({ 
     'font-size': '100.1%', 
      'background-size': '200%' 
    }, 200, function() { 
     window.setTimeout(pulse(), 4000); 
    }).delay(200); 
} 

Fiddle
在我看來,該setTimeout(pulse(), 4000);是inmediatly執行,不管我用的是超時。另外,當我在手機上查看它時,會在一段時間後崩潰。

我不太熟悉jQuery延遲方法,但我做錯了什麼?我不知道如果我讀自己的代碼正確:)

編輯:
Updated Fiddle
:這是我的崩潰移動設備「點擊文件靜音」代碼崩潰,其他代碼。你介意看看它,並告訴我,如果你看到什麼可能會導致電話崩潰?

+0

「我的手機」 - 您可能需要指定您在此處使用的內容;也許這只是您使用的瀏覽器中的一個錯誤。 – coreyward

+0

@coreyward銀河S2,可能只是推動它太難我想。 – Jonathan

回答

1

setTimeout(pulse(), 4000);應該setTimeout(pulse, 4000);

注意有沒有括號pulse後。

這是因爲當括號存在時,它意味着函數應該被評估(這是導致它立即執行的原因)。沒有它們,它是對作爲參數傳遞給setTimeout的函數的引用,並且只有在setTimeout選擇執行它時纔會執行,這正是您想要的。

+0

謝謝,傻了。我現在完全刪除回調並使用'setInterval'。當我在手機上查看時,間隔仍然會使js崩潰。手機不能處理定時器? – Jonathan