2011-04-19 11 views

उत्तर

141

सेटटाइमआउट कुछ समय के विलंब के बाद कुछ कोड निष्पादित करेगा (मिलीसेकंड में मापा गया)। हालांकि, एक महत्वपूर्ण नोट: जावास्क्रिप्ट की प्रकृति की वजह से, कोड के बाकी टाइमर के बाद चलाने के लिए जारी है सेटअप है:

$('#someid').addClass("load"); 

setTimeout(function(){ 
    $('#someid').addClass("done"); 
}, 2000); 

// Any code here will execute immediately after the 'load' class is added to the element. 
+1

यह वर्तमान समय में एक खराब समाधान है क्योंकि यह एनीमेशन पर jquery नियंत्रण रखने का लाभ खो देता है, जैसे .stop()। एक बेहतर समाधान है। डेले() – user151496

2

एक समारोह नहीं है, लेकिन यह अतिरिक्त है: http://docs.jquery.com/Cookbook/wait

यह छोटा-सा स्निपेट आप प्रतीक्षा करने के लिए अनुमति देता है:

$.fn.wait = function(time, type) { 
    time = time || 1000; 
    type = type || "fx"; 
    return this.queue(type, function() { 
     var self = this; 
     setTimeout(function() { 
      $(self).dequeue(); 
     }, time); 
    }); 
}; 
+3

यह फ़ंक्शन केवल (ए) एनीमेशन कतार में कोड को प्रभावित करता है। – Pointy

35

कि .delay() होगी।

http://api.jquery.com/delay/

आप AJAX के सामान यद्यपि कर रहे हैं, तो आप वास्तव में होना चाहिए न सिर्फ ऑटो लिखने "किया" क्या तुम सच में एक प्रतिक्रिया के लिए प्रतीक्षा करें और देखें कि यह वास्तव में किया है चाहिए।

+1

इसके अलावा स्टीवन आप '.removeClass (' load ')' अन्यथा चाहते हैं, अन्यथा आप दोनों वर्गों को लोड और कर जोड़ना चाहते हैं, जो शायद अवांछित है। यदि आप वास्तव में एक एसिंक्रोनस एक्शन को पूरा करने की प्रतीक्षा कर रहे हैं, तो आपकी सबसे अच्छी शर्त है .addClass जब यह पूरा हो जाता है और सफल होता है, तो नहीं .addClass ('error') शायद एक विचार –

+38

कोई भी "देरी()" फ़ंक्शन नहीं है रास्ता सामान्य उद्देश्य "प्रतीक्षा" सुविधा जैसी कुछ भी प्रदान करता है। यह एनीमेशन सिस्टम का एक हिस्सा है, और केवल एनीमेशन कतार पर लागू होता है। फ़ंक्शन हमेशा तुरंत लौटाता है, और निष्पादन बिना रोक के जारी रहता है। – Pointy

18

एहसास है कि यह एक पुराने सवाल है, लेकिन मैं यह पता करने के लिए एक प्लगइन लिखा था मुद्दा है कि कोई उपयोगी हो सकता है।

$('#myElement').addClass('load').wait(2000).addClass('done'); 
+1

आपको बहुत पागल धन्यवाद! – Blauhirn

-1

setTimeout सुविधा, Visit here for example

+16

अपने अधिकांश उत्तर –

+3

के लिए लिंक पर भरोसा नहीं करना सबसे अच्छा माना जाता है @JamesJenkins टिप्पणी का बैकअप लेने के लिए, ऐसा इसलिए है क्योंकि लिंक हमेशा विश्वसनीय नहीं होते हैं। यदि कोई व्यक्ति एक लिंक जोड़ना है, तो कोड को अपने उत्तर में भी शामिल करना सबसे अच्छा है। – Tass

11

देरी() का उपयोग उदाहरण के लिए काम नहीं करेंगे:

https://github.com/madbook/jquery.wait

आप यह कर सकते हैं। देरी() के साथ समस्या यह एनीमेशन सिस्टम का हिस्सा है, और केवल एनीमेशन कतारों पर लागू होती है।

क्या होगा अगर आप एनीमेशन के बाहर कुछ निष्पादित करने से पहले प्रतीक्षा करना चाहते हैं ??

इस का उपयोग करें:

window.setTimeout(function(){ 
       // do whatever you want to do  
        }, 600); 

क्या होता है ?: इस परिदृश्य में यह कोड घुंघराले ब्रेसिज़ के भीतर निर्दिष्ट निष्पादित करने से पहले 600 मिलीसेकंड इंतजार कर रहा है।

इससे मुझे यह पता चला कि एक बार मुझे बहुत मदद मिली और उम्मीद है कि इससे आपकी मदद भी होगी!

संबंधित मुद्दे