我有以下结构等待jQuery的动画完成,而无需使用回调
$('foo').click(function() {
var bool = false;
$('bar').animate(function() {
//bool = something
});
return bool;
});
但因为动画回调是异步,布尔从来没有正确设置。将return语句移入回调没有任何意义。我怎样才能让return语句等待动画完成?
我有以下结构等待jQuery的动画完成,而无需使用回调
$('foo').click(function() {
var bool = false;
$('bar').animate(function() {
//bool = something
});
return bool;
});
但因为动画回调是异步,布尔从来没有正确设置。将return语句移入回调没有任何意义。我怎样才能让return语句等待动画完成?
这是不可能的,返回将立即发生—有没有办法推迟它。试着做它,而不是这样:
$('foo').click(function(e) {
e.preventDefault();
var _this = this;
$('bar').animate(function() {
if (somecondition) {
window.location.href = _this.href;
// or submit the form, etc.
}
});
});
不好的人。我希望在我的桌子上敲我的头之前,我已经问过了。 – mrtsherman
尝试像下面,
$('foo').click(function(e) {
e.preventDefault(); //prevent submission
var bool = false;
$('bar').animate(function() {
//bool = something
if (bool) {
//do what you wanted to do
}
});
});
你能告诉我们你正在尝试做的?如果您可以提供一些背景信息,我们可以提供一种替代方法 –
“将return语句移入回调没有任何意义。”为什么不? – j08691
@ j08691 - 因为它返回的是匿名函数,而不是父函数 – mrtsherman