2010-03-05 35 views
52

मुझे jQuery: FadeOut then SlideUp मिला है और यह अच्छा है, लेकिन यह एक नहीं है।fadeOut() और slideUp() एक ही समय में?

मैं एक ही समय में fadeOut() और slideUp() कैसे कर सकता हूं? मैंने उसी विलंब के साथ दो अलग setTimeout() कॉल की कोशिश की लेकिन slideUp() पृष्ठ लोड होने के तुरंत बाद हुआ।

क्या किसी ने ऐसा किया है? सख्ती से एक fadeout लिए

$("#mySelector").animate({ height: 'toggle', opacity: 'toggle' }, 'slow'); 

:

उत्तर

99

आप कुछ इस तरह कर सकते हैं, यह एक पूर्ण टॉगल संस्करण है

$("#mySelector").animate({ height: 0, opacity: 0 }, 'slow'); 
+2

* bonks निक * उन ' 'show''' होना चाहिए' – Powerlord

+0

toggle'' @Powerlord - ओह आप सही हैं, यहां दिखाए गए परीक्षण का परीक्षण कर रहे थे, दोह –

2

मैं एक ऐसी ही समस्या थी और इस तरह यह तय हो गई।

$('#mydiv').animate({ 
      height: 0, 
     }, { 
      duration: 1000, 
      complete: function(){$('#mydiv').css('display', 'none');} 
     }); 
$('#mydiv').animate({ 
      opacity: 0, 
     }, { 
      duration: 1000, 
      queue: false 
     }); 

कतार संपत्ति यह बताता है एनीमेशन क़तार में किया जाए या बस इसे कुछ वेब पन्नों पर एक झटकेदार गति में अभी

15

सीधे एनिमेट ऊंचाई परिणाम खेलते हैं। हालांकि, jQuery के slideUp() के साथ एक सीएसएस संक्रमण संयोजन एक चिकनी गायब कार्य के लिए बनाता है। कोड के साथ

function slideFade(elem) { 
    var fade = { opacity: 0, transition: 'opacity 0.5s' }; 
    elem.css(fade).slideUp(); 
    } 

slideFade($('#mySelector')); 

फिडल: समाधान मैं dna.js परियोजना में इस्तेमाल जहां टॉगल के लिए अतिरिक्त सहायता देखने के लिए कोड (github.com/dnajs/dna.js) देख सकते हैं
http://jsfiddle.net/00Lodcqf
bye

यह वह जगह है और कॉलबैक।

+1

अच्छा कोड, धन्यवाद! यह बिल्कुल ठीक है जैसे स्लाइडअप() + fadeOut() –

+1

धन्यवाद। निक क्रेवर का स्वीकार्य उत्तर कोडकोलास के जवाब में उल्लिखित कारण के लिए मेरे लिए काम नहीं करता था। हालांकि, मैं आपका कोड पसंद करता हूं क्योंकि यह आपको फीका और अस्पष्टता प्रभाव के लिए अलग-अलग समय निर्धारित करने देता है। (उदा।, मुझे लगता है कि जब आप स्लाइडअप की तुलना में थोड़ा तेज़ फीका करते हैं तो देखो।) हालांकि, मुझे आपकी चिकनीता के दावे के बारे में निश्चित नहीं है। मेरे कंप्यूटर पर, आपके कोड द्वारा उत्पादित प्रभाव आईई में चिकनी है लेकिन विशेष रूप से क्रोम में नहीं है। – Atlas

10

"निक क्रेवर" द्वारा स्वीकृत उत्तर निश्चित रूप से जाने का तरीका है। एकमात्र चीज जो मैं जोड़ूंगा वह यह है कि उसका जवाब वास्तव में इसे "छुपा" नहीं देता है, जिसका अर्थ है कि डोम अभी भी इसे प्रदर्शित करने के लिए व्यवहार्य तत्व के रूप में देखता है।

यदि आपके पास 'स्लीड' तत्व पर मार्जिन या पैडिंग है तो यह एक समस्या हो सकती है ... वे अभी भी दिखाए जाएंगे। तो मैं सिर्फ animate() फ़ंक्शन करने के लिए एक कॉलबैक जोड़ा वास्तव में इसे छिपाने के लिए एनीमेशन पूरा होने के बाद:

$("#mySelector").animate({ 
    height: 0, 
    opacity: 0, 
    margin: 0, 
    padding: 0 
}, 'slow', function(){ 
    $(this).hide(); 
}); 
+0

'सही उत्तर' –

1

@CodeKoalas के आधार पर वहाँ में एक और शोधन फेंकने। यह लंबवत मार्जिन और पैडिंग के लिए जिम्मेदार है लेकिन क्षैतिज नहीं है।

$('.selector').animate({ 
    opacity: 0, 
    height: 0, 
    marginTop: 0, 
    marginBottom: 0, 
    paddingTop: 0, 
    paddingBottom: 0 
}, 'slow', function() { 
    $(this).hide(); 
}); 
0

यह बहुत की तरह खुद को slideUp और fadeOut तरीकों के साथ ऐसा करना संभव है:

$('#mydiv').slideUp(300, function(){ 
    console.log('Done!'); 
}).fadeOut({ 
    duration: 300, 
    queue: false 
}); 
संबंधित मुद्दे