我希望在循环一组元素时创建一个动画链;当第一步的动画完成时,将调用下一个循环步骤。链条是这样的:
第 1 步(在元素 A 上工作)
更改背景颜色
更改字体颜色
(-> 触发第 2 步)
再次更改背景颜色再次
更改字体颜色
第 2 步(在元素 B 上工作)
更改背景颜色
更改字体颜色
等待 1 秒
再次更改背景颜色再次
更改字体颜色
-> 触发 resolve()
我写了这个:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>jQuery Deferred</title>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
function animation() {
return $.Deferred(function(dfr) {
dfr.pipe(function() {
return $.Deferred(function(dfr) {
$.when($('#text').animate({
color : '#ff0000',
fontSize : '3em'
}, 'slow').delay(3000), $('#text').animate({
color : '#ff0000',
fontSize : '6em'
}, 2000)).then(dfr.resolve())
}).promise();
}).pipe(function() {
return $.Deferred(function(dfr) {
$.when($('#text').animate({
color : '#c456fa',
fontSize : '1em'
}, 'slow')).then(dfr.resolve())
}).promise();
})
}).promise();
}
//}, 1500)
var a = $.when(
animation()).done(function() {
console.log('done');
});
});
</script>
</head>
<body>
<p id="text">
TEXT
</p>
</body>
</html>
我希望“console.log('done')”只写在所有管道中..但是动画都没有开始!
怎么了?
(对不起我糟糕的英语,你可以理解我要编码的内容)。