デモを参照してください: jsFiddle
- 「表示」/「キャンセル」をクリックすると切り替えられる単純なフォームがあります
- すべて正常に動作しますが、フォームが表示された直後に [キャンセル] をクリックすると、アニメーションが始まるまでに 2 ~ 3 秒の遅延が発生します。
- 「キャンセル」をクリックする前に数秒待った場合、これは起こりません。
- この遅延は、テスト済みのすべてのブラウザー (つまり、ff、chrome) で発生します。
1. このラグの原因と、それを防ぐ方法は?
2. この一連のアニメーションをコーディングするための、遅延を防ぐためのより良い方法はありますか?
HTML :
<div id="newResFormWrap">
<form id="newResForm" action="" method="post" name="newRes">
<div id="newResFormCont">
<h3>title</h3>
<p>form!</p>
<div class="button" id="cancelNewRes">Cancel</div>
</div>
</form>
</div>
<div class="button" id="addRes">show</div>
jQuery:
$("#newResForm").css({opacity: 0});
$("#addRes").click(function () {
toggleNewRes()
});
$("#cancelNewRes").click(function () {
toggleNewRes()
});
//toggleNewRes
function toggleNewRes() {
if ($("#newResFormWrap").css('display') == "none") {//if hidden
$("#addRes").animate({ opacity: 0 }, 'fast', function() {
$("#newResFormWrap").toggle('fast', function (){
$("#newResForm").animate({ opacity: 100 },2000);
});
});
} else { //if visible
$("#newResForm").animate({ opacity: 0 }, 100,function() {
$("#newResFormWrap").toggle('fast', function (){
$("#addRes").animate({ opacity: 100 });
});
});
}
}