2009-02-18 10 views
7

तो मुझे क्या करना चाहते हैं कुछ jQuery का उपयोग कर कुछ AJAX के लिए कहता है कि मैं के साथ काम कर रहा हूँ प्रभाव समन्वय करने के लिए है। मेरी समस्या यह है कि दूसरे div के लिए fadeIn पहले div के लिए fadeOut के साथ एक ही समय में आग लगती है।jQuery कतार घटनाओं

यह अन्य घटनाओं के रूप में अच्छी तरह तो मैं उत्सुक हूँ लागू हो सकते हैं, वहाँ fadeId लांच केवल के बाद fadeOut किया जाता है बनाने के लिए किसी भी तरह से है?

jQuery("#div1").fadeOut("slow"); 
jQuery("#div2").fadeIn("slow"); 

धन्यवाद

उत्तर

13

आप एक कॉलबैक का उपयोग करके ऐसा कर सकते हैं। JQuery docs देखें।

jQuery("#div1").fadeOut("slow", function() { jQuery(this).fadeIn('slow'); }); 

सुंदर ज्यादा jQuery प्रभाव की सब के बाद प्रभाव खत्म हो गया है निष्पादित करने के लिए एक कॉलबैक ले।

+0

धन्यवाद, कि यह था! :) – Brayn

+0

सवाल में, फीडइन एक दूसरे div के बारे में था। क्या आपके कोड में कॉलबैक में 'jQuery ("# ​​div2")' नहीं होना चाहिए? – akauppi

+0

धन्यवाद! इससे मुझे मदद मिली। जब मैं यह आसान था, तो मैं कतार का पता लगाने की कोशिश में व्यस्त था! –

16

कि एक त्वरित एनीमेशन के लिए पर्याप्त आम तौर पर अच्छा है, लेकिन अगर आप प्रभाव की एक संख्या अप क़तार में चाहते हैं, तो आप भी कतार() और विपंक्ति() पद्धतियों इस तरह उपयोग कर सकते हैं:


$("#div1").fadeOut(); 
$("#div1").queue(function() 
{ 
    $(this).fadeIn(); 
    $(this).dequeue(); 
}); 
$("#div").queue(function() 
{ 
    $(this).html("And now I'm sliding up. Wee!"); 
    $(this).slideUp("slow"); 
    $(this).dequeue(); 
}); 

इधर, कतार() ऑब्जेक्ट की कतार में एक फ़ंक्शन जोड़ता है (जिसे एनीमेशन नहीं होना चाहिए) और डेक्यू() उस फ़ंक्शन को निष्पादित करता है।

अधिक जानकारी के लिए docs देखें।

3

ऊपर के उदाहरण है जो यह फ़ायरफ़ॉक्स में, सही संस्करण काम करने से रोका में कुछ लेखन-त्रुटियों थे:

$("#div1").fadeOut(); 
$("#div1").queue(function() 
{ 
    $(this).fadeIn(); 
    $(this).dequeue(); 
}); 
$("#div").queue(function() 
{ 
    $(this).html("And now I'm sliding up. Wee!"); 
    $(this).slideUp("slow"); 
    $(this).dequeue(); 
}); 
संबंधित मुद्दे