同期して要素をアニメーション化する必要があります(つまり、アニメーション(この例ではfadeIn())が完了するまで待機するため、適切に続行できます)。
私が知っている限り、私には3つの選択肢があります。
doSomething: function () {
$('.someElement').fadeIn(function () {
// do something else here...
});
}
別のアプローチ($ .proxy()を使用してコンテキストを変更する):
doSomething: function () {
$('.someElement').fadeIn($.proxy(function () {
this.doSomethingElse();
}, this));
},
doSomethingElse: function () {
// ...
}
ただし、$。proxy()を使用すると、コンテキストが「混合」され、私はこれが本当に好きではありません(いつ戻ってきて、お尻を噛むのかわからないため)、私は時々これを使用していますアプローチ:
doSomething: function () {
$('.someElement').fadeIn(function () {
doSomethingElse();
});
function doSomethingElse () {
// ...
}
}
今、私は疑問に思っています、より良いアプローチはありますか?よりシンプルでエレガントなもの。好き:
doSomething: function () {
$('.someElement').fadeIn(function () {
// do this in an async way...
});
// simply do something else here...
}
私はクリーンなコードが好きで、この単純でありながらクリーンでないソリューションは好きではないので、この問題は本当に私を悩ませます。