2010-12-28 19 views
55
$('.transparent').removeClass('transparent').delay(2000).addClass('not_transparent').delay(4000) 

मेरे पास एक div है जो अर्ध पारदर्शी है और फिर इसे पारदर्शी नहीं करना चाहता। लेकिन jQuery .delay(); विधि यहां काम नहीं कर रही है। मैंने कोशिश की है। फेडइन(); इसके बजाए और यह देरी के साथ काम करता है लेकिन यह बदलती कक्षाओं में काम नहीं करता है।jQuery देरी काम नहीं कर रहा

उत्तर

118

.delay() उन वस्तुओं के लिए उपयोग किया जाता है जो queue का हिस्सा हैं, जैसे एनिमेशन। एक साधारण addClass कतारबद्ध नहीं है।

आप setTimeout का उपयोग कर सकते हैं।

var trans = $('.transparent').removeClass('transparent'); 
setTimeout(function() { 
    trans.addClass('not_transparent'); 
}, 2000); 

एक विकल्प के रूप में, आप गैर पंक्तिबद्ध आइटम कतार .queue() उपयोग करने के लिए, जोड़ने हालांकि मुझे लगता है कि एक setTimeout बेहतर होगा सकता है।

$('.transparent').removeClass('transparent').delay(2000).queue(function(nxt) { 
     $(this).addClass('not_transparent'); 
     nxt(); 
}); 
+3

ठीक है, यही कारण है कि। सही बात। सेटटाइमआउट यह है :) – s84

+0

आपको लगता है कि सेटटाइमआउट बेहतर क्यों है? – s84

+3

@ सैम: यह बहुत ही सरल है, और एक मूल कार्यान्वयन है। मुझे नहीं पता कि 'कतार()' के साथ किस तरह का ओवरहेड शामिल है, लेकिन मुझे यकीन है कि यह 'setTimeout' से थोड़ा अधिक है। – user113716

0

.delay() एक समारोह के बाहर .addClass() टैग के साथ काम नहीं करता है तो बस का उपयोग करें:

delay(); 
function delay(){ 
    $('.pgtitle').delay(5000).fadeIn(0).addClass('animated bounceInDown'); 
} 
3

मैं जानता हूँ कि यह एक पुराने सवाल है, लेकिन अभी भी गूगल से यहाँ आने ताकि यातायात का एक बहुत है मैं अपने दो सेंट जोड़ दूंगा;

आप की तरह कुछ इस्तेमाल कर सकते हैं -

$('.transparent').fadeIn().delay(500).queue(function(){ 
 
    $('.transparent').addClass('yourclass'); 
 
});

आपको विलंब के बाद उन्हें निष्पादित करने के लिए में कतार में एक समारोह पारित कर सकते हैं। बहुत ही समान उदाहरणों के लिए इसे स्वयं इस्तेमाल कर रहे हैं।

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