我正在使用jQuery 1.5.1这是我的代码:
$('.cellcontent').animate({
left: '-=190'}, {
easing: alert('start ani'),
duration: 5000,
complete: alert('end ani')});
我在动画开始之前得到了两个警报!?我希望在动画结束后启动完整的功能。有什么想法吗?
答案 0 :(得分:31)
您需要传递一个函数来调用。相反,你正在调用该函数。
complete: function() { alert('end ani'); }
答案 1 :(得分:27)
我认为这有两个问题。
一,easing
应为:
表示缓和的字符串 用于过渡的功能
complete
应该是一个函数。
alert('start ani');
$('.cellcontent').animate({
left: '-=190'
},
{
easing: 'swing',
duration: 5000,
complete: function(){
alert('end ani');
}
});
答案 2 :(得分:10)
您需要传递一个功能才能完成。
试试这个:
$('.cellcontent').animate({
left: '-=190'}, {
easing: alert('start ani'),
duration: 5000,
complete: function() { alert('end ani') }
});
由于complete需要一个函数,它会执行你传递给它的代码,以获得一个函数对象,它可以在完成时回调。
答案 3 :(得分:4)
最佳解决方案就是这个。
$('.cellcontent').animate({
left: '-=190'}, {
easing: alert('start ani')
}, duration).promise().done(function () {
alert('end animation');
});
答案 4 :(得分:3)
来自jquery docs:
$( "#clickme" ).click(function() {
$( "#book" ).animate({
opacity: 0.25,
left: "+=50",
height: "toggle"
}, 5000, function() {
// Animation complete.
});
});
答案 5 :(得分:1)
首先在函数中声明它们,否则立即调用该方法:
var onComplete = function () {
alert('end ani');
};
然后在没有()
的情况下调用它们$('.cellcontent').animate({
left: '-=190'}, {
easing: 'slow',
duration: 5000,
complete: onComplete //<-- function is passed as a variable, not called directly
});
或将它们直接包装到一个函数中(在调用它时可读性较低且速度较慢):
$('.cellcontent').animate({
left: '-=190'}, {
easing: 'slow',
duration: 5000,
complete: function () {
alert('end ani');
}
});
答案 6 :(得分:0)
我认为你不需要“完整”吗?
slideToggle(
"fast","swing", function(){
// your code here
}
);
答案 7 :(得分:0)
当我有几个与选择器匹配的元素时,我遇到了同样的问题。当我将 HTML 和代码更改为只有一个元素与选择器匹配时,一切都很好。
答案 8 :(得分:-1)
$('.cellcontent').animate({
left: '-=190',
easing: 'slow',
duration: 5000,
function () {
alert('end ani');
}
});