Add done() function in jquery plugin to wait until animation finishes -


मेरी समस्या तब होती है जब मैं एक जोड़ता हूं:

  .done (function () {innerDef .resolve ();}); "एनीमेट" फ़ंक्शन में  

यह काम नहीं करता, जैसे मैं चाहता था।
मुझे एक्शन खत्म होने तक इंतजार करना चाहते हैं, जैसे कि:

< पूर्व> $ ('# anim_vision')। शो ()। Done (function () {चेतावनी ('कार्य समाप्त!');});

मेरा पूर्ण प्लगइन कोड:

  (फ़ंक्शन ($) {$ .fn.extend ({showThis: फ़ंक्शन (विकल्प) {var def = $ .निर्धारित (); var विकल्प = $। विस्तार (विकल्प); var deferredList = []; this.each (फ़ंक्शन () {var innerDef = $ .निर्धारित (); deferredList.push (innerDef.promise ()); $ (यह)। बच्चों ('। टेक्क्सो') .removeClass ('opacity_none')। सीएसएस ('प्रदर्शन', 'ब्लॉक'); $ (यह) .अनुमान ({'ऊंचाई': '100%'}, 900, 'सोईऑटक्वाड')। (फ़ंक्शन () (आंतरिक डीफ.रोलव ();});}); $। जब। एपली ($, डेफ़र्ड लिस्ट) .डोन (फ़ंक्शन () {def.resolve ();}); वापसी Def.promise ();}});}) (jQuery);  

मुझे मदद की ज़रूरत है, कृपया!

एक नियमित jQuery ऑब्जेक्ट में कोई .done () विधि नहीं है। आपको इसे बदलकर एनीमेशन के लिए वायर्ड ऑब्जेक्ट प्राप्त करने के लिए .promise () कॉल करने की आवश्यकता होगी:

  .atimate ({'height': '100%' }, 900, 'आरामऑटक्वाड')। (समारोह () {innerDef.resolve ();});  

इसे करने के लिए:

  .अनुमति दें ({'ऊंचाई': '100%'}, 900, 'सोईऑटक्वाड') .promise ()। (फ़ंक्शन () {innerDef.resolve ();});  

लेकिन, आप अपनी खुद की innerDef बनाने की बजाय सीधे वादे का इस्तेमाल करके चीजों को आसान बना सकते हैं।


आगे, आपको अपना खुद का स्थगित करने की आवश्यकता नहीं है क्योंकि आप केवल $ से वादा वापस कर सकते हैं। जब () :

  (फ़ंक्शन ($) { $ .fn.extend ({showThis: फ़ंक्शन (विकल्प) {var विकल्प = $। विस्तार (विकल्प); var वादा लिस्ट = []; this.each (फ़ंक्शन () {$ (this)। बच्चों ('। Texto') .removeClass ('opacity_none')। सीएसएस ('डिस्प्ले', 'ब्लॉक'); // एनीमेशन चलाते हैं, // एनीमेशन कतार के लिए एक वादा ऑब्जेक्ट प्राप्त करें, // इसे वादे के वादे की हमारी सूची में डाल दें। (यह) .मेट ({'ऊंचाई': '100%'}, 900, 'आरामऑटक्वाड') .प्रोमिज () ); }); // एक नया वादा वापस आ जाता है जो / जब सभी एनिमेशन लौटाए जाते हैं, तब $ $ समाप्त होता है। जब। एपली ($, वायर्ड लिस्ट); }}); }) (JQuery);  

आगे शोध करने के बाद, आप इसे इस से अधिक सरल कर सकते हैं:

  jQuery.fn.extend ({showThis: function () { रिटर्न (यह। बच्चों ('। टेक्क्सो') .removeClass ('opacity_none')। सीएसएस ('डिस्प्ले', 'ब्लॉक')। सैमेट ({'ऊंचाई': '100%'}, 900, 'आरामऑटक्वाड')। पक्का वादा()         );     } });   

आगे के परिवर्तन:

  1. सभी jQuery विधियां जिन्हें आप कॉल कर रहे हैं, वे पहले से ही पूरे संग्रह को पुनरावृति करते हैं ताकि आपको उन्हें आप विकल्प तर्क का उपयोग नहीं कर रहे हैं ताकि आप उसे निकाल सकें।
  2. आपके पास कोई भी लगातार राज्य चर नहीं है, इसलिए आप उन्हें चारों ओर फ़ंक्शन आवरण की जरूरत नहीं है।
  3. jQuery का .promise () हल करता है जब पूरे संग्रह को एनिमेट किया जाता है तो यह आपके लिए यह काम करता है आपको अपने खुद की $ की आवश्यकता नहीं है। जब () या अपने स्वयं के वादे सरणी आप केवल .promise () को वापस कर सकते हैं जो .animate () के बाद आता है और जब सभी एनीमेशन पूर्ण हो जाएंगे तब यह हल होगा।

आप इस डेमो को यह देख सकते हैं कि कैसे .promise () पूरे संग्रह को एनिमेटिंग के लिए इंतजार कर रहा है:।


Comments

Popular posts from this blog

import - Python ImportError: No module named wmi -

Editing Python Class in Shell and SQLAlchemy -

c# - MySQL Parameterized Select Query joining tables issue -