Javascript jQuery动画不触发回调函数
我有以下jQuery动画功能:Javascript jQuery动画不触发回调函数,javascript,jquery,jquery-animate,jquery-effects,jquery-easing,Javascript,Jquery,Jquery Animate,Jquery Effects,Jquery Easing,我有以下jQuery动画功能: $myDiv.animate({ "left": "0%" }, { duration: 1000, easing: 'easeInOutExpo' }, function () { alert('hi'); } ); $myDiv.animate({ "left": "0%", }, { duration: 1000, easing: "easeInOutExpo", complete: fun
$myDiv.animate({ "left": "0%" }, { duration: 1000, easing: 'easeInOutExpo' },
function () {
alert('hi');
}
);
$myDiv.animate({
"left": "0%",
}, {
duration: 1000,
easing: "easeInOutExpo",
complete: function () {
alert('hi');
},
});
动画本身可以工作$myDiv
幻灯片具有所需的easeInOutExpo
效果。但是,回调函数永远不会被激发。为了测试它,我将回调改为仅仅alert(“hi”)代码>,如上所示。还是不行
我可能做错了什么?试试这个
演示:
这里有几个问题需要解决:
确保代码中包含了jQuery UI,因为它不是标准jQuery库的一部分
您的语法错误:您混淆了函数的两个不同选项李>
要么是
$(element).animate(properties [,duration] [,easing] [,complete]);
或
其中,options
是如下格式的对象:
{
duration: number,
easing: string,
complete: function,
}
您已经使用了第二个选项,因此您需要正确格式化它,以便为您的函数使用options
对象的complete
属性:
$myDiv.animate({ "left": "0%" }, { duration: 1000, easing: 'easeInOutExpo' },
function () {
alert('hi');
}
);
$myDiv.animate({
"left": "0%",
}, {
duration: 1000,
easing: "easeInOutExpo",
complete: function () {
alert('hi');
},
});
或者,您可以使用第一个格式选项:
$("#myDiv").animate({
"left": "0%",
}, 1000, "easeInOutExpo", function () {
alert('hi');
});
一种方法是使用JQuery Promise
除非您将$myDiv
设置为等于$(“#myDiv”)
,否则它应该是后者。@AstroCB是的,$myDiv等于该值。它是动态变化的,这就是为什么它是一个变量。它已正确设置,并且动画确实有效。只是没有完整的功能,就是这样!谢谢@Dola知道为什么会这样(为什么必须指定complete:)?再次感谢@Nullqwerty好吧,您可以随时参考jQuery文档以获取使用示例。你可以查一查我去过哪里。但不了解下文所述的@AstroCB混合格式。现在我知道了。ThanksThanks@AstroCB我是JQuery新手,刚刚了解了您描述的格式。谢谢你的提示。我确实有放松图书馆在那里(就像我说的,它的那部分工作得很好)。但其中的格式部分正是回调函数不能像Dola上面指出的那样工作的原因。再次感谢。你的解释使我非常理解。没有意识到存在混合格式的问题。现在我知道了。Thanks@Nullqwerty没问题;我很高兴能帮上忙。我建议您浏览一下,因为它很好地展示了库中每一部分的不同语法和需求。
$myDiv.animate({ "left": "0%" }, { duration: 1000, easing: 'easeInOutExpo' }).promise().done(function(){
alert('hi done');
});