我必须以同步方式为元素设置动画(即等到动画(本示例中为 fadeIn() )完成,这样我才能正确地继续)。
据我所知,我有三个选择:
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...
}
这个问题确实困扰着我,因为我喜欢干净的代码,但我不喜欢这种简单但不干净的解决方案。