我有这样的代码将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
,因为可以在不涉及任何效果的其他上下文中调用代码。
答案 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)