多くのトピックと jQuery ドキュメントを読みましたが、それでもこの問題を解決できません。
私が持っているのは、不透明度0と背景色のdivです。いくつかのボタンのユーザー「クリック」イベントで、不透明度1のdivを作成し、読み込み画像を追加する「StartAnimationFuncton」関数を呼び出します。
次に、サーバーから情報を受信したら、"StopAnimationFuncton" 関数を呼び出して、読み込み中の div を削除し、背景の div を不透明度 0 で再度作成します。
注: 削除する前に読み込みに delay(1000) を設定しました。リクエストが速すぎると、読み込みが数ミリ秒表示されて見苦しくなるためです。
//StartAnimationFuncton
$("#BackGroundDiv").stop('fx',true,false).animate({opacity:1.0},1000,function(){
$('#ShopperPortalLoadingDivContentTable').remove();
$('<div id="Loading" style="width:100%;height:100%"></div>').hide().appendTo('#BackGroundDiv').stop('fx',true,false).fadeIn(500,function(){
...
//Waiting data from the server - when the date is call the StopAnimationFunction
...
});
});
//StopAnimationFuncton
$('#Loading').stop(true,false).delay(1000).fadeOut(500,function(){
$(this).remove();
$("#BackGroundDiv").stop(true,false).animate({opacity:0.0},1000,function(){
ShopperPortal.Content.Functions.Render.InitializeRenderModeContainerAndLoadingEffects.Parameters.IsStopLoadingEffectActive=false;
});
});
私の問題は、ユーザーがボタンを何度も「クリック」しても、現在のアニメーションが停止しないことです。要素の組み合わせごとに stop(),stop('fx',true,false), stop(true,true), stop(true,false) を使用して、すべてのバリアントを試しましたが、何も役に立ちません。
現在のアニメーションを停止して機能を完了する正しい方法はどれですか? また。私の論理が正しくない場合、新しいアイデアを受け入れることができますか?
編集 1: jQuery バージョン 1.8.2 を使用しています
EDID 2: 遅延 (1000) は削除/キャンセルできないため、問題が発生する可能性があることを読みました。
Jquery .delay().fadeOutキャンセル/クリアキュー..可能ですか? どのように?
http://forum.jquery.com/topic/stop-does-not-clear-delay
そのため、animation({opacity:1.0},1000) に置き換えましたが、何も変わりませんでした。