如何使用jquery延迟函数的执行?

时间:2013-03-01 13:39:25

标签: javascript jquery asynchronous

我有这样的代码将li元素附加到给定的ul并具有奇特的效果,然后我调用一个函数,其行为取决于{{1}的子元素数}:

ul

问题是,当调用$(li).hide().appendTo("#ul-authors").show("blind"); toggleIfNeeded(); ... function toggleIfNeeded() { if ($("#ul-authors > li").length === 1) { doSomething(); } else { doSomethingElse(); } } 时,新的toggleIfNeeded似乎还不存在,因为效果并未完全执行。如果我删除效果,它可以正常工作。

我该怎么做?我想我需要一些计时器,但这将是异步的(我不想阻止应用程序获得奇特的效果),或者更好的是,一种告诉“在执行效果时调用该函数”的方法。

我无法在上面用li更改1,因为可以在不涉及任何效果的其他上下文中调用代码。

3 个答案:

答案 0 :(得分:3)

您可以将回调传递给.show()。如果你改变了

$(li).hide().appendTo("#ul-authors").show("blind");
toggleIfNeeded();

$(li).hide().appendTo("#ul-authors").show("blind", toggleIfNeeded);

然后在动画结束时自动调用你的函数。

答案 1 :(得分:1)

show()的第二个参数可以是一个函数,您可以在动画结束时执行所需的操作

答案 2 :(得分:1)

试试这个

.show('<effect>', callbackFunction)