1

だから私はhtmlフォームに相当するものを持っていますが、<form>それ自体は実際のものではありません。現在、すべてのフィールドをデフォルトにリセットするために使用している「クリア」ボタンがあります。

美的観点から、フォームをフェードアウトし、「なくなった」ときにリセットし、完全にリセットしてフェードバックしたいと思います。私はこれを達成するためにこれまでにこのコードを持っています:

function Reset() {

    $formDiv.fadeOut(function() {

        // perform reset actions here
        $(this).fadeIn()
    });
}

ただし、divがフェードアウトすると、フィールドがリセットされるため、フェードアウト中にすべてのフィールドが物理的にデフォルトに戻ることがわかります。その後、フェードアウトが完了するとすぐにフェードインします。閉じますが、フィールドがリセットされるのをユーザーに見せたくありません。以下を試して、fadeOutが完了するまでフィールドをリセットするのを待ちましたが、無限ループか何かが発生しました(ブラウザーはスクリプトの実行速度が遅いと言って、停止するかどうか尋ねてきました):

function Reset() {

    $formDiv.fadeOut(function() {

        while (!$(this).is(':animated')) {
            // perform reset actions here
        }

        $(this).fadeIn()
    });
}

ですから、ここからどこへ行けばいいのかよくわかりません。どんな助けでもいただければ幸いです。ありがとう。

4

4 に答える 4

3

私は最近同じ問題を抱えていましたが、fadeOutそれは正しく機能していないようです、そして私はそれの解決策を見つけました:

$(this).animate({opacity:'0'},function(){

   //here changes to this element

   $(this).animate({opacity:'1'});
})

フェードイン/フェードアウトと同じように見えますが、期待どおりに機能します(要素が非表示のときに変更が加えられます)

皆様のお役に立てれば幸いです。

于 2012-12-12T12:39:42.357 に答える
1

使用する

jQuery.stop().fadeOut() 

フェードアウトアニメーションのキューイングを防ぐため。

.stop() can be used to prevent queueing any jQuery Animation 

http://api.jquery.com/stop/

于 2013-08-22T06:14:49.073 に答える
0

.delayを調べます

詳細:アニメーションがfadeOut()にかかる時間を設定し、fadeOutアニメーション時間よりも長いfadeIn()アニメーションの遅延を使用します。この例では、リセットアクションはfadeOutアニメーション中に発生し、おそらく600ミリ秒より長くはかかりません。

$formDiv.fadeOut(600,function() {

    // perform reset actions here
    $(this).delay(650).fadeIn()
});

編集:おっと、問題を少し誤解しました。リセットフォームロジックを、fadeOutではなくfadeIn()呼び出しでトリガーする必要があります。しかし、アニメーションイベントを同期することはまだ良いことだと思います。次のようなものを試してください:

$formDiv.fadeOut(600,function() {
    $(this).delay(650).fadeIn(function() {
        // perform reset actions here
    });
});
于 2010-01-29T21:52:25.310 に答える
0

アニメーションが完了するまで、コールバックは実際には起動しないはずです。フェードアウトで速度を設定しようとしましたか?ドキュメント(常に正確であるとは限りません)はそれを必須パラメーターとして示しており、コールバックを指定した場合にのみ発生する可能性があります-つまり、関数を速度として評価している可能性があります明示的に指定しない場合。

$formDiv.fadeOut('fast', function() {
    // perform reset
    $(this).fadeIn();
});

編集:コードを調べた後、(少なくとも1.3.2では)最初の引数として関数を指定すると、関数が評価され、戻り値が速度として使用されるように見えます。速度を指定すると、コールバック関数は期待どおりに機能するはずです。要素がフェードアウトし、コールバックが起動し、リセットとフェードインのコードが実行されます。

于 2010-01-29T21:57:14.710 に答える