मान लें कि मेरे पास कई एनिमेशन एक साथ चल रहे हैं, और एक बार जब वे सभी समाप्त हो जाएंगे तो मैं एक फ़ंक्शन कॉल करना चाहता हूं।jQuery, एकाधिक एनिमेशन के बाद केवल एक बार कॉलबैक को कॉल करना
केवल एक एनीमेशन के साथ, यह आसान है; इसके लिए एक कॉलबैक है। उदाहरण के लिए:
$(".myclass").fadeOut(slow,mycallback);
समस्या है, अगर मेरे चयनकर्ता को कई आइटम मिलते हैं, तो उनमें से प्रत्येक के लिए कॉलबैक बुलाया जाएगा।
एक कामकाज बहुत कठिन नहीं है; उदाहरण के लिए:
<!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>
मेरा प्रश्न है: क्या ऐसा करने का एक बेहतर तरीका है?
ज्यादातर मामलों में, मैं काउंटर के बजाय एक बूलियन का उपयोग करता हूं (इसलिए पहली एनीमेशन के अंत में कार्रवाई की जाती है), लेकिन अन्यथा यह वही विधि है। अच्छा सवाल है, मैं अन्य तरीकों से उत्सुक हूं। वास्तव में –
। आप उन सभी के लिए इंतजार करना चाहते हैं यदि उदाहरण के लिए आपके सभी एनिमेशन एक ही लंबाई के नहीं हैं (मेरे सरल उदाहरण में नहीं), और आप चीजों को आगे बढ़ने के बाद कुछ करना चाहते हैं, या अपने ब्राउज़र पर लुप्त होना चाहते हैं। –