दिलचस्प पोस्ट
कोणीय जेएस – इनपुट को स्वचालित रूप से फोकस करें और टाईकाहेड ड्रॉपडाउन दिखाएं – ui.bootstrap.typeahead निष्पादन योजना में एक कंप्यूटित कॉलम के लिए एक यूज़र-डिफ़ाइंड फ़ंक्शन कॉल क्यों शामिल है जो जारी है? लार्जर कैच टोकनमस्मैचएक्सेशन कच्चे यूडीपी पैकेटों को कैसे संसाधित करें ताकि वे एक डायोड-शॉ स्रोत फिल्टर में डीकोडर फिल्टर द्वारा डीकोड कर सकें UIColors की तुलना कैसे करें? नामित उप घटक वाले घटक बनाना? वेबब्रोजर कंट्रोल में क्लिक करें ध्वनि को अक्षम कैसे करें FindViewById () लेआउट XML में कस्टम घटक के लिए शून्य प्रदान करता है, अन्य घटकों के लिए नहीं कॉलिंग आर फ़ंक्शन से सी ++ जावास्क्रिप्ट डबल डॉलर साइन एंड्रॉइड में RelativeLayout के विचारों के Z ऑर्डर को परिभाषित करना उदाहरण के बारे में "व्यवहार में जावा संगतता" के बारे में सवाल JSONArray से JSONObject प्राप्त करना मौजूदा जीआईटी शाखा को एक दूरदराज शाखा पर नज़र डालें? दो अलग-अलग कॉलमों के लिए किसी अन्य एसक्यूएल तालिका से मिलान डेटा कैसे प्राप्त करें: इनर जॉइन एंड / या यूनियन?

jQuery $ .animate () कई तत्व लेकिन केवल एक बार कॉलबैक फ़ायर करें

यदि आप jQuery के साथ चेतन करने के लिए एक वर्ग या तत्वों का संग्रह चुनते हैं:

$('.myElems').animate({....}); 

और फिर भी कॉलबैक फ़ंक्शन का उपयोग करें, आप बहुत सारे अनावश्यक animate() कॉल के साथ समाप्त होते हैं

 var i=1; $('.myElems').animate({width:'200px'}, 200, function(){ //do something else $('#someOtherElem').animate({opacity:'1'}, 300, function(){ if (i>1) console.log('the '+i+'-th waste of resources just finished wasting your resources'); i++; }); }); 

बेशक यह सिर्फ खराब कोड और / या डिज़ाइन है – लेकिन ऐसा कुछ है जो मैं कर सकता हूं कि दोनों बहुत से animate() कॉल को कॉलबैक का उपयोग करते हुए केवल एक कॉल से बचाते हैं, और मेरे कोड / कोड के साथ निष्कासन और पंगा लेना अनिवार्य कॉलबैक का भार रखते हैं I अपेक्षित व्यवहार?

आदर्श रूप से मैं सिर्फ एक 'डिस्पोजेबल' कॉलबैक को कोडित करने में सक्षम होता हूं जो केवल एक बार चलाएगा – अन्यथा शायद परीक्षण करने के लिए एक प्रभावी तरीका है अगर कुछ पहले से ही jQuery द्वारा एनिमेटेड हो रहा है?

उदाहरण: http://jsfiddle.net/uzSE6/ (चेतावनी – यह चेतावनी बक्से का लोड दिखाएगा)

Solutions Collecting From Web of "jQuery $ .animate () कई तत्व लेकिन केवल एक बार कॉलबैक फ़ायर करें"

आप when इस्तेमाल कर सकते हैं:

 $.when($('.myElems').animate({width: 200}, 200)).then(function () { console.log('foo'); }); 

http://jsfiddle.net/tyqZq/

वैकल्पिक संस्करण:

 $('.myElems').animate({width: 200}, 200).promise().done(function () { console.log('foo'); }); 

आप दूसरे + कॉलबैक को ब्लॉक करने के लिए एक चर बना सकते हैं …

 var i=1; $('.myElems').animate({width:'200px'}, 200, function(){ //do something else $('#someOtherElem').animate({opacity:'1'}, 300, function(){ if (i>1) return; else { console.log('the '+i+'-th waste of resources just finished wasting your resources'); i++; } }); }); 

यह केवल एक बार आग जाएगा क्योंकि प्रत्येक बाद के कॉलबैक को रद्द कर दिया जाएगा 🙂