Javascript 设置jquery不工作的动画
我的jQuery代码确实有一个小问题 未捕获类型错误:未定义不是函数Javascript 设置jquery不工作的动画,javascript,jquery,jquery-animate,Javascript,Jquery,Jquery Animate,我的jQuery代码确实有一个小问题 未捕获类型错误:未定义不是函数 函数AnimateCloud(){ $(“#cloudAmu”)。制作动画({ “左”:“+150%” },5000,‘线性’; 返回false; } 函数AnimateCloud2(){ $(“#cloudAmu”)。制作动画({ “右”:“+150%” },5000,‘线性’; 返回false; } $(文件)。准备好了吗( AnimateCloud()。然后(AnimateCloud2()) ); 你知道有什么问题吗
函数AnimateCloud(){
$(“#cloudAmu”)。制作动画({
“左”:“+150%”
},5000,‘线性’;
返回false;
}
函数AnimateCloud2(){
$(“#cloudAmu”)。制作动画({
“右”:“+150%”
},5000,‘线性’;
返回false;
}
$(文件)。准备好了吗(
AnimateCloud()。然后(AnimateCloud2())
);
你知道有什么问题吗
致意
Goldiman尝试调用then()函数,但AnimateCloud()返回false
function AnimateCloud(complete) {
$("#cloudAmu").animate({
"left": "+150%"
}, 5000, 'linear', complete);
}
AnimateCloud(function() {
AnimateCloud2()
});
您正在尝试调用非jQuery对象的
AnimateCloud()
上的函数。
当它完成动画时,可以从内部调用AnimateCloud2()
,请参见下面的代码
<script type="text/javascript">
function AnimateCloud() {
$("#cloudAmu").animate({
"left": "+150%"
}, 5000, 'linear', function(){
AnimateCloud2();
});
return false;
}
function AnimateCloud2() {
$("#cloudAmu").animate({
"right": "+150%"
}, 5000, 'linear');
return false;
}
$(document).ready(function(){
AnimateCloud();
});
</script>
函数AnimateCloud(){
$(“#cloudAmu”)。制作动画({
“左”:“+150%”
},5000,'线性',函数(){
AnimateCloud2();
});
返回false;
}
函数AnimateCloud2(){
$(“#cloudAmu”)。制作动画({
“右”:“+150%”
},5000,‘线性’;
返回false;
}
$(文档).ready(函数(){
AnimateCloud();
});
问题是因为函数返回的布尔值为false
,该值没有then()
方法
要将调用链接到函数,需要从对animate()
的调用中返回promise
。试试这个:
function AnimateCloud() {
return $("#cloudAmu").animate({
"left": "+150%"
}, 5000, 'linear').promise();
}
function AnimateCloud2() {
return $("#cloudAmu").animate({
"right": "+150%"
}, 5000, 'linear').promise();
}
$(document).ready(function() {
AnimateCloud().then(AnimateCloud2)
});
请注意,似乎
AnimateCloud()
和AnimateCloud2()
都包含相同的逻辑,可以进行改进。导致jquery中的animate方法在上一个animate完成之前不会执行。。你可以用
$(document).ready(function(){
AnimateCloud();
AnimateCloud2();
});
Boolean
没有方法。然后()
谢谢大家的帮助@丽晶,我已经更新了我的答案。它应该在完成动画后调用。还有一件事要做:它必须是$(document).ready(AnimateCloud)
或$(document).ready(函数(){AnimateCloud();})
$(document).ready(AnimateCloud().then(AnimateCloud2))代码>无法按要求工作。最好用function(){}
来包装它。你说得对,我的错。我以为你的意思是在then()
调用中添加一个anon.函数,我没有看到ready()
缺少一个,我将以fiddle作为例子留下注释。
$(document).ready(function(){
AnimateCloud();
AnimateCloud2();
});