3

現在の記述方法では、msg.dがアニメーションを停止するのに十分な時間が経過するまで「true」から「false」を返し始めると、hideが何度も起動します。

isHidingか何かがありますか?

前もって感謝します!

if(msg.d == "true") {
    if(!$("#addContactEmailError").is(":visible")) {
         $("#addContactEmailError").show('bounce');
    }
    $("#addContactSubmitButton").attr("disabled", true);
}
else {
    if($("#addContactEmailError").is(":visible")) {
         $("#addContactEmailError").hide('slide', { direction: "up" });
    }
    $("#addContactSubmitButton").attr("disabled", false);
}

編集1

これはすべてキーアップハンドラーにあります。

編集2

アニメーションを使用すると、アニメーションが完了したときにのみアニメーションが起動されます。msg.dが変更されたが、現在正しくないアニメーションが終了していない場合、正しいアニメーションは起動しません。

ラメソリューション

状態を追跡するためにグローバルブール値を使用しました。私はそれをするのが嫌いです。可能な場合は、より良い解決策のために賞金を支払う。ありがとうございます!

バウンティをキャンセルしました

申し訳ありませんが、自分の担当者と一緒に購入する必要があることに気づいていませんでした。:(

4

4 に答える 4

2

stopアニメーション、中間アニメーションを作成し、それをそのstopped css状態から別の状態に移動させる場合は、最も重要なこととして、を使用しますstop(true, false)

結論:stop(true,false)「魔法のように」そのトラックでアニメーションを停止しますが、停止したアニメーションのcssパラメータが何であれ、cssが設定されていると見なすため、stoppedからアニメーション化する方法を推測または理解しようとせずに、その時点から続行できます。点。

つまり、cssを設定したanimateが、それをpedした場合、アニメーション化された要素は、起動されたstopcss状態にとどまりますが、 pedアニメーションに入力されたcss設定は、変更されるまで現在のcss設定になります。stopstop

それが鍵です。stopcss状態の左側を推測する必要はありません。アニメーションが完全に完了したかのように戻ることができます。

これは、この概念の基本のデモンストレーションです:http: //jsfiddle.net/dYYZP/65/


ここからベースアニメーションを取り除いた:Jqueryレイヤードアニメーションを下からスライドアウト


追記

animateabsoluteポジショニング内でのrelativeポジショニング、、、の使いやすさから、組み込みのアニメーションを使用することはめったにありません。彼らはあまりにも不格好で、あなたが本当に必要なものを知りません。これらは最も基本的なアニメーションには最適ですが、ページを輝かせたい場合は、上記の概念(追加するのは非常に簡単です)を利用する必要があります。offsetstop(true,false)

于 2012-10-16T01:15:59.843 に答える
1

アニメーションセレクターを使用して、現在アニメーション化されているかどうかを確認できます。

http://api.jquery.com/animated-selector/

于 2012-09-21T16:40:06.987 に答える
1

上記のように、「:animated」seclectorを使用することをお勧めします

if(msg.d == "true") {
    var contact = $("#addContactEmailError");

    if(!contact.is(":visible") && !contact.is(":animated")) {
         contact.show('bounce');
    }
    $("#addContactSubmitButton").attr("disabled", true);
}
else {
    if(contact.is(":visible") && !contact.is(":animated")) {
         contact.hide('slide', { direction: "up" });
    }
    $("#addContactSubmitButton").attr("disabled", false);
}
于 2012-09-21T16:52:16.930 に答える
1

多分あなたはあなたが使うべき.stop().hide(.stop.show(どこでもhideそしてあなたが使うべきですshow

于 2012-09-21T17:02:20.327 に答える