jQuery动画函数回调bug

时间:2013-12-03 08:33:05

标签: javascript jquery

我有以下代码用于滑出div:

var current = $('.s_text:visible');
current.animate({
  right: 1014,
  opacity:0,
},{queue: false, duration:2000}, function() {
  current.hide();
});

由于某种原因,回调函数不起作用!但!如果我删除选项{queue:false, duration:2000}并将其替换为,2000,function()....,则回调功能将起作用。

current.animate({
      right: 1014,
      opacity:0,
    },2000, function() { // this one works...
      current.hide();
    });

为什么?

4 个答案:

答案 0 :(得分:3)

如果您使用.animate方法的第二个参数作为选项对象,则无法将回调作为第三个参数发送。

在您的情况下,您需要使用选项对象的完整参数。

var current = $('.s_text:visible');
current.animate({
  right: 1014,
  opacity:0,
},{queue: false, duration:2000, complete:function() {
  current.hide();
}});

此方法接收的两个可选参数集是:

.animate( properties [, duration ] [, easing ] [, complete ] )

.animate( properties, options )

但不能同时兼得。

来源:http://api.jquery.com/animate/

答案 1 :(得分:1)

动画:

.animate( properties, options )

在此处查找参考:http://api.jquery.com/animate/

var current = $('.s_text:visible');
current.animate(
  {
    right    : 1014,
    opacity  :0
  },{
    queue   : false, 
    duration:2000,
    complete: function() {
         current.hide();
    }
 });

答案 2 :(得分:1)

如果你想使用options(队列和持续时间)你就不能拥有这样的回调函数;你应该在options中加入回调函数(参见documentation):

var current = $('.s_text:visible');
current.animate({
    right: 1014,
    opacity:0
},{
    queue: false, 
    duration:2000,
    complete: function() {
        current.hide();
    }
);

答案 3 :(得分:1)

因为.animate()只有两个声明:

  1. .animate(properties [,duration] [,easing] [,complete])
  2. .animate(properties,options)
  3. 没有一个是您的用途,您可以在此处查看有关.animate()的更多信息:http://api.jquery.com/animate/