Aynı anda birkaç animasyonun çalıştığını ve bunların tamamlanmasının ardından bir işlevi çağırmak istediğimi varsayalım.jQuery, birden çok animasyondan sonra yalnızca bir kez geri arama çağıran
Sadece bir animasyonla, kolay; Bunun için bir geri çekilme var. Örneğin: Benim seçici çeşitli öğeleri bulursa
$(".myclass").fadeOut(slow,mycallback);
Sorun şu ki, geri arama bunların her biri için çağrılır.
Bir geçici çözüm çok zor değil; örneğin:
<!DOCTYPE html>
<html>
<head>
<title>Example</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function() {
var $mc=$(".myclass"),l=$mc.length;
$mc.fadeOut("slow",function(){
if (! --l) $("#target").append("<p>All done.</p>");
});
});
</script>
<style type="text/css">
</style>
</head>
<body>
<p class="myclass">Paragraph</p>
<p class="myclass">Paragraph</p>
<p class="myclass">Paragraph</p>
<p class="myclass">Paragraph</p>
<p class="myclass">Paragraph</p>
<p class="myclass">Paragraph</p>
<div id="target"></div>
</body>
</html>
Sorum şu: Bunu yapmanın daha iyi bir yolu var mı?
Çoğu durumda, bir sayaç yerine bir boole kullanıyorum (bu nedenle eylem ilk animasyonun sonunda gerçekleştirilir), ancak aksi durumda aynı yöntemdir. Güzel soru, başka yollardan merak ediyorum. –
Gerçekten. Örneğin, tüm animasyonlarınız aynı uzunlukta değilse (basit örneğimde olduğu gibi) ve yalnızca bir şeyler hareket ettikten sonra veya tarayıcınızda solmadan sonra bir şeyler yapmak istiyorsanız hepsini beklemek istersiniz. –