2011-09-13 64 views
1
$('textarea.contact').click(function(){ 
    $(this).animate({"backgroundPosition": "+=350 -=150"}, 500).delay(500); 
    $(this).animate({"backgroundPosition": "+=350 -=150"}, 500); 
}); 

我正在使用背景位置庫爲了動畫背景。我想讓背景滑到一半。暫停在中間,然後繼續前進。不幸的是,當我用這種方式編寫代碼時,動畫會移動一半。在中間暫停,然後從頭開始重新開始動畫而不是遞增。有誰知道爲什麼?使用延遲在中間暫停jQuery動畫。有一些問題

+0

將兩行代碼組合成單鏈時會發生什麼? – Blazemonger

回答

0

也許用一個回調函數,像這樣:

$(this).animate({"backgroundPosition": "+=350 -=150"}, 500, function() { 
    $(this).delay(500).animate({"backgroundPosition": "+=350 -=150"}, 500); 
}); 

還挺聽起來像CSS的背景圖像不會被保存在初始動畫完成後,也許設置的CSS在回調函數:

$(this).animate({"backgroundPosition": "+=350 -=150"}, 500, function() { 
    $(this).css({"backgroundPosition": '...'}); 
    $(this).delay(500).animate({"backgroundPosition": "+=350 -=150"}, 500); 
}); 
+0

$(this).css({「backgroundPosition」:'...'}); 這不是必需的。但是其餘的代碼就是這樣做的。有趣的jquery不保存沒有回調函數的值。 多個點擊事件可以像這樣增加一個動畫。然而,一個點擊事件不能使用回調函數。有趣。 – ionfish

+0

你用什麼插件爲背景設置動畫? – Jasper