jquery事件仅在特定事件完成时执行

时间:2010-03-30 14:39:08

标签: javascript jquery

$('#div1')。focus(function(){       callAnotherFunction();

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

我试图在$(this).animate({});完成后执行callAnotherFunction();。目前,两者同时运行。我已经定时使用delay(),setTimeout()也无济于事。无论如何这可以做到吗?

谢谢!

2 个答案:

答案 0 :(得分:2)

JavaScript是单线程的,因此一次只能执行一个表达式。在您提供的示例中,$(this).animate({});将在callAnotherFunction();完成后才会运行。

callAnotherFunction();可能会在计时器或延迟上运行其他代码,在这种情况下,您必须在超时时$(this).animate({});具有相等或更大的延迟,以便之后执行。

答案 1 :(得分:0)

如有疑问,请将您的功能作为参数传递:

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

...使用callAnotherFunction看起来像这样:

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