2009-01-20 10 views
15

शुरू करें मेरे पास दो divs और दो अलग-अलग लिंक हैं जो स्लाइड को ट्रिगर करते हैं और divs के लिए स्लाइडअप।एक एनीमेशन समाप्त करें, फिर दूसरा

जब divs में से एक नीचे slided कर रहे हैं और मैं एक दूसरे को क्लिक करें, मैं पहली बार div छिपाने (slidingUp) और फिर दूसरे div (slidingDown) खोलने लेकिन इस समय ऐसा लगता है कि जबकि एक div नीचे फिसलने है पर, दूसरा, एक ही समय में, फिसल रहा है।

क्या ऐसा कोई तरीका है जो jQuery को एक div के नीचे स्लाइडिंग समाप्त करने के लिए प्रतीक्षा करेगा और केवल तभी दूसरे को स्लाइड करना शुरू कर देगा?

+1

क्या आपके पास पहले से देखने के लिए उपयोगी हो सकता है। –

उत्तर

20
$('#Div1').slideDown('fast', function(){ 
    $('#Div2').slideUp('fast'); 
}); 

संपादित करें: आप की जांच की है अकॉर्डियन प्लगइन (है कि यदि आप ऐसा करने के लिए कोशिश कर रहे हैं क्या है)?

0

अधिकांश jquery फ़ंक्शंस में कॉलबैक पैरामीटर होता है, आप बस उसमें एक फ़ंक्शन पास कर सकते हैं।

+0

यह कैसे करें? –

0
$("#thisDiv").slideUp("slow", function() { 
    // This function is called when the slideUp is done animating 
    $(this).doNextThing(); 
}); 
-1

फ़ंक्शन के दूसरे पैरामीटर का उपयोग करें: कॉलबैक। उदाहरण के लिए,

 
$(this).slideDown(speed, function(){ 
    $(this).slideUp(); 
}); 
+0

जो एक ही div को नीचे बैक अप करेगा, वास्तव में उस आदमी ने क्या नहीं पूछा, आह? –

1

आप जब पहली किया जाता है एक अगली प्रभाव आग एक कॉलबैक का उपयोग कर सकते हैं:

$("#element1").slideUp(
    "slow", 
    function(){ 
     $("#element2").slideDown("slow"); 
    } 
); 

इस उदाहरण में के बाद slideUp एनीमेशन समाप्त हो गया है समारोह slideUp विधि के लिए दूसरा तर्क के रूप में परिभाषित कहा जाता हो जाता है। सरणियों, एनीमेशन कतारों पकड़े, आदि को अपनी आवश्यकताओं के अनुसार आप पुनरावर्ती कार्यों के साथ इस मज़ेदार बना सकते हैं http://docs.jquery.com/Effects/slideUp

5

आप इस

function animationStep1() 
{ 
    $('#yourDiv1').slideUp('normal', animationStep2); 
} 

function animationStep2() 
{ 
    $('#yourDiv2').slideDown('normal', animationStep3); 
} 

// etc 

बेशक जैसे कि यह श्रृंखला चाहिए,:

दस्तावेज़ देखें।

+3

कृपया, कृपया, कृपया * फ़ंक्शन() {animationStep2() के बजाय, 'एनीमेशनस्टेप 2' डालें; } '। एक और समारोह को कॉल करने के लिए एक नया नया फ़ंक्शन क्यों बनाएं? – Aistina

+0

@ एस्टिना: उचित बिंदु, मैंने यह परिवर्तन किया है, बहुत बहुत धन्यवाद। –

0

इस का एक उदाहरण JQuery for Beginners - Day 2

में देखा जा सकता कि यह शिक्षण सामग्री के 15 दिनों के हैं और वे एक अच्छा संसाधन हैं। का आनंद लें!

4

एक क्लीनर उदाहरण थोड़ा और एनीमेशन के बीच देरी से:

$("#elem").fadeIn(1000).delay(2000).fadeOut(1000); 
संबंधित मुद्दे