div の内容を変更するのに問題があります。私が達成したいのは、アニメーションが終了するのを待ってから、コンテンツを変更してアニメーションを起動し、新しい情報を明らかにすることです。このコードはときどき機能します。つまり、ハングすることがあります (isWorking が false になることはありません。これは、アニメーションがフリーズしたり、アニメーションが 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') は、アニメーションがまだ進行中の場合に表示されることを理解していますが、その間の絶え間ないループのためにすべてがフリーズします。誰かが私を正しい方向に向けることができますか?
編集:私は誤解されていると思います。達成したい計画は次のとおりです。
- アニメーションの非表示を開始します。
- アニメーションが非表示になっている間、コンテンツを取得するために別の関数を起動しています。コンテンツをより速く取得する場合は、アニメーションが終了するのを待ってから、コンテンツを変更してレイヤーを再度表示します。データが返されるまでに 1 秒以上かかる場合、ここでは問題はありません
あなたが提案したように、アニメーションが完了した後にそれを行うことができることに同意しますが、アニメーションの実行時間をほぼ 1 秒に設定し、その時間をデータベースからデータを取得するために使用できます。最も効果的なコードを探しています。