2010-08-13 14 views
25

मैं एक div बाहर हो जाते हैं, उसकी सामग्री की जगह है, और यह में वापस फीका करने के लिए एक छोटे से जावास्क्रिप्ट चाल करने के लिए कोशिश कर रहा हूँ में देरी नहीं। .html घटना सामग्री को बदल रहा है पहले fadeOut पूरा हो गया है ...jQuery .delay() .html() फ़ंक्शन

$("#products").fadeOut(500) 
       .delay(600) 
       .html($("#productPage" + pageNum).html()) 
       .fadeIn(500); 

यह कि .html().delay() विधि की देरी नहीं की जा रही है प्रकट होता है।

+4

'.delay()' केवल एनीमेशन घटनाओं पर काम करता है, 'इतना .delay()' कि संदर्भ से बाहर कुछ नहीं आप के लिए क्या करेंगे। निराशाजनक, मुझे पता है। –

+0

कृपया 'fadeOut के लिए http://stackoverflow.com/a/13351574/3779853 देखना (500) .Wait (500) .html (..)' – Blauhirn

उत्तर

39

delay अपने मामले के लिए काम करेंगे जब queue इस तरह के साथ प्रयोग किया है:

$("#products").fadeOut(500) 
    .delay(600) 
    .queue(function(n) { 
     $(this).html("hahahhaha"); 
     n(); 
    }).fadeIn(500);​ 

इसे यहाँ का प्रयास करें: http://jsfiddle.net/n7j8Y/

+0

+1 मेरी 'श्रृंखला()' वास्तव में 'कतार था() '! ;) – Frankie

+0

+1 इसके लिए एक jQuery है। –

+0

दो चीजें - '.dtml() '' .html() 'पर क्यों काम नहीं करती है और' n() 'क्या करती है? –

1

आप fcallback फ़ंक्शन पैरामीटर का उपयोग करके fadeOut पूर्ण होने पर परिवर्तन करने के लिए इसे बदल सकते हैं।

तो यह हो जाता है:

$("#products").fadeOut(500, function() { 
    $(this).html($("#productPage" + pageNum).html()); 
    $(this).fadeIn(500); 
}); 
0

शायद "कतार" जिस तरह से यह ठीक है, लेकिन यह जावास्क्रिप्ट समाधान मेरे लिए बेहतर काम करता है:

setTimeout (function(){ 
     $("#products").html('Product Added!'); 
    },1000); 
संबंधित मुद्दे