使用jQuery顺序运行两个函数

时间:2014-10-22 18:27:37

标签: jquery

我有两个功能。我需要在fTwo()之前运行fOne()。

function fOne() {
   if ($('.container').width() < 300) {
    $('.box').each(function(){
          $(this).removeClass('largeSize').addClass('smallSize');
    });
   }
 }

function fTwo() {

    var el = $('.myElement');

    $(el).each(function() {
        var pcntH = el.height(),
            scorH = el.parent().find('.box').outerHeight(true),
            pcntT = scorH - pcntH - 5;

        el.css({'position':'relative', 'top': pcntT + 'px'}).fadeIn('slow');
    });
}

是否可以做这样的事情:

fOne().done(fTwo());

这是想法,但不起作用......

3 个答案:

答案 0 :(得分:0)

如果你没有异步调用它们fOne(); fTwo();应该工作,否则有fOne(); return fTwo();

答案 1 :(得分:0)

只需使用回调函数。在

的定义中
function fOne(callback) {
   if ($('.container').width() < 300) {
    $('.box').each(function(){
          $(this).removeClass('largeSize').addClass('smallSize');
    });
   }
   callback();
 }

然后拨打电话fOne(fTwo);。你已经确定了。

答案 2 :(得分:0)

jQuerys whendone可用于执行异步操作,因为它们使用Deffereds。发送到when的函数将被执行,只有在该函数完成后,它才会调用由done定义的函数。

$.when( fOne() ).done( function() { fTwo(); } );

您可以在api.jquery.com

查看