在另一个之后调用函数的替代方法

时间:2014-05-01 08:53:35

标签: javascript jquery

我使用.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');
    })

2 个答案:

答案 0 :(得分: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看到这不是正确的。

答案 1 :(得分:1)

像这样使用动画回调

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

});