li
ファンシーな効果で与えられたに要素を追加するそのようなコードがありul
、その動作がその子の数に依存する関数を呼び出しますul
:
$(li).hide().appendTo("#ul-authors").show("blind");
toggleIfNeeded();
...
function toggleIfNeeded() {
if ($("#ul-authors > li").length === 1) {
doSomething();
} else {
doSomethingElse();
}
}
問題は、 が呼び出されたときに、効果が完全に実行されていないためtoggleIfNeeded
、 newがまだ存在していないように見えることです。li
エフェクトを削除すると、正しく機能します。
どうやってやるの ?ある種のタイマーが必要だと思いますが、それは非同期である(ファンシーな効果のためにアプリをブロックしたくない)か、「効果が実行されたときにその関数を呼び出す」ことを伝える方法です。
効果が関係しない他のコンテキストでコードを呼び出すことができるため、上記を変更する可能性はありません1
。0