Javascript 设置jquery不工作的动画

Javascript 设置jquery不工作的动画,javascript,jquery,jquery-animate,Javascript,Jquery,Jquery Animate,我的jQuery代码确实有一个小问题 未捕获类型错误:未定义不是函数 函数AnimateCloud(){ $(“#cloudAmu”)。制作动画({ “左”:“+150%” },5000,‘线性’; 返回false; } 函数AnimateCloud2(){ $(“#cloudAmu”)。制作动画({ “右”:“+150%” },5000,‘线性’; 返回false; } $(文件)。准备好了吗( AnimateCloud()。然后(AnimateCloud2()) ); 你知道有什么问题吗

我的jQuery代码确实有一个小问题

未捕获类型错误:未定义不是函数


函数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();
});