代码之家  ›  专栏  ›  技术社区  ›  Lyon

仅当特定事件完成时执行的jquery事件

  •  1
  • Lyon  · 技术社区  · 14 年前

    $('div1').focus(函数()。{ callanotherFunction();

      $(this).animate({});
    }
    

    我在努力 $(this).animate({}); 在此之后执行 callAnotherFunction(); 已完成。目前,两者同时运行。我已经用delay(),setTimeout()来计时了,也没有用。还有什么可以做到的吗?

    谢谢!

    2 回复  |  直到 14 年前
        1
  •  2
  •   Andy E    14 年前

    javascript是单线程的,因此一次只执行一个表达式。在你给出的例子中, $(this).animate({}); 不会运行,直到 callAnotherFunction(); 已完成。

    有可能 callanotherFunction(); 在计时器或延迟上运行附加代码,在这种情况下,您必须 $(this).animate(); 在具有相等或更大延迟的超时情况下,它将在之后执行。

        2
  •  0
  •   Andy E    14 年前

    当有疑问时,将函数作为参数传递:

    $('#div1').focus(function () {
        var $t = $(this);
        callAnotherFunction(function(){ $t.animate(); });
    }
    

    …当callanother函数看起来像这样:

    function callAnotherFunction(callback){
        // do whatever you were previously doing, and then...
        callback();
    }