2014-05-01 91 views
1

我使用.done方法在必须依次执行的相关函数之间生成顺序。我通常有“.done不是函数”的错误,因为它对我来说不是很清楚,哪里可以放置.done继续调用函数的另一种方法

在这种情况下,我有同样的问题:我需要第一个.newClassForm动画,直到0高度,然后.infoText填充一些文本,并按此顺序显示。

如果我使用.done方法,因为它显示在这里,提到错误发生。

哪里可以放置.done?我怎么能解决这样的情况?:

$('.tableClassHeader').on('click', '.smartFormDiscard', function(){      
    $('.newClassForm').animate({'height': 0}, 500);}).done(function(){ 
      $('.infoText').text("Crea una nueva clase").css('display','inline'); 
    }) 

回答

3

你的语法是简单的关闭。如果你正确地格式化你的代码,它实际上是这样的:

$('.tableClassHeader').on('click', '.smartFormDiscard', function(){      
    $('.newClassForm').animate({'height': 0}, 500); 
}).done(function(){ 
    $('.infoText').text("Crea una nueva clase").css('display','inline'); 
}) 

.done链接到该.on方法。

我也相信你必须先在jQuery对象上调用.promise。所以实际的代码应该是:

$('.tableClassHeader').on('click', '.smartFormDiscard', function(){      
    $('.newClassForm').animate({'height': 0}, 500).promise().done(function(){ 
      $('.infoText').text("Crea una nueva clase").css('display','inline'); 
    }); 
}); 

由于;通常终止语句,你已经可以看到);}).done,这不可能是正确的。

+0

因此.done并不意味着放置一个functtion之后。我错了。当然,完成声明。谢谢,我会在8分钟内打勾。 – Biomehanika

+0

做了另一个改变。我相信你必须先调用'.promise'。 –

1

使用动画回调这样

$('.tableClassHeader').on('click', '.smartFormDiscard', function(){      
    $('.newClassForm').animate({'height': 0}, 500 , function(){ 
      $('.infoText').text("Crea una nueva clase").css('display','inline'); 
    }); 

}); 
+0

谢谢,aready解决。 – Biomehanika

相关问题