See demo: jsFiddleCome evitare questo strano jQuery .animate() lag?
- Ho una forma semplice che viene attivato quando si fa clic 'show'/'annullare'
- Tutto funziona bene, ma se si fa clic su 'annullare' poco dopo la forma è rivelato, c'è un buon ritardo di 2-3 secondi prima che l'animazione inizi anche.
- Questo non accade se si attende qualche secondo prima di fare clic su "annulla".
- Il ritardo si verifica in tutti i browser testati (ad esempio, ff, chrome).
1. Che cosa potrebbe causare questo ritardo e come può essere prevenuto?
2. Esiste un modo migliore per codificare questa sequenza di animazioni, che potrebbe impedire eventuali ritardi?
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 });
});
});
}
}
bella spiegazione – Roy
Risposta perfetta. –