我无法更改 div 的内容。我想要实现的是等待动画结束,然后更改内容以启动动画以显示新信息。这段代码不时工作,这意味着有时它会挂起(isWorking 永远不会变为假,因为动画冻结或动画永远没有时间从 while 内的不断循环中完成。)有没有办法等待动画结束和然后改变内容?(您在下面看到的方式允许我在动画进行时浏览新内容,这为最终用户节省了时间。)有没有办法捕捉动画何时结束?
function DesignResults(InnerHTML) {
while(isWorking){
}
$("#holder").html(InnerHTML);
ShowSearch(true);
}
var isWorking = false;
function ShowSearch(show) {
isWorking = true;
var outer = $("#outer");
var inner = $("#inner");
var height = 0;
if (show == true)
height = inner.outerHeight();
var loaderHeight
if (height > 0) {
loaderHeight = 0;
} else {
loaderHeight = 31;
}
outer.animate({
'height': height + "px"
}, 1600, function () {
$("#loading").animate({ 'height': loaderHeight + "px" }, 900, function () { });
isWorking = false;
});
}
我知道如果动画仍在进行中, $(elem).is(':animated') 会给我,但由于 while 的不断循环,它仍然会冻结所有内容。谁能指出我正确的方向?
编辑:我想我被误解了。这是我想要实现的计划:
- 开始隐藏动画。
- 当动画隐藏时,我正在启动另一个函数来获取内容如果我更快地获取内容,我希望等待动画结束然后更改内容并再次显示图层。如果数据返回的时间超过一秒,则这里没有问题
我同意我可以按照您的建议在动画完成后执行此操作,但是我已将动画设置为将近 1 秒的执行时间,并且该时间可用于从数据库中提取数据。我正在寻找最有效的代码。