0

多くのトピックと 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) に置き換えましたが、何も変わりませんでした。

4

1 に答える 1

0

同じ要素で複数のアニメーション メソッドが呼び出された場合、後のアニメーションがその要素のエフェクト キューに配置されます。

これらのアニメーションは、最初のアニメーションが完了するまで開始されません。
.stop()呼び出されると、キュー内の次のアニメーションがすぐに開始されます。

パラメータclearQueueに の値が指定されている場合true、キュー内の残りのアニメーションは削除され、実行されません。

于 2012-10-12T15:24:45.380 に答える