2011-01-26 19 views
13

मैं $('somediv').fadeOut.remove(); कोशिश लेकिन यह केवल इसे हटाने, टकरा ... यह अच्छा fadeOut के लिए इंतजार नहीं है, और फिर निकालेंjQuery अनुक्रम fadeOut और फिर हटाने

क्यों .. fadeout सम्मान करने के लिए कैसे, और फिर हटा दें। ।

उत्तर

38

एक कॉलबैक का उपयोग करें:

$('somediv').fadeOut(function() { $(this).remove(); }); 

कॉलबैक फ़ंक्शन आप fadeOut()(docs) को गुजर रहे हैं पर अमल नहीं किया जाएगा जब तक एनीमेशन पूरा हो गया है में कोड।

उदाहरण:http://jsfiddle.net/p2LWE/

एक वैकल्पिक queue()(docs)remove()(docs) को होगा, लेकिन मुझे लगता है कि कॉलबैक बेहतर है।

$('somediv').fadeOut() 
      .queue(function(nxt) { 
       $(this).remove(); 
       nxt(); 
      }); 
+0

और जहां "निकालें" के लिए "धीमी" पैरामीटर जोड़ना होगा? – armen

+2

@armen: $ ('somediv')। FadeOut ('धीमा', फ़ंक्शन() {$ (यह) .remove();}); – Merijn

1

jQuery चेनिंग के साथ, चेन का एक हिस्सा अन्य भागों के समाप्त होने की प्रतीक्षा नहीं करता है यदि समय-आधारित घटक होता है। तो जब आप कुछ और करना चाहते हैं तो एक और चीज खत्म होने पर, आपको कॉलबैक का उपयोग करना होगा। इस मामले में, आप fadeOut() को पैरामीटर के साथ कॉल करते हैं, जब यह पूरा हो जाता है। इसलिए जैसा:

$('#somediv').fadeOut(function(){ $(this).remove(); })};

तो जब fadeOut() किया जाता है (और आप एक प्रमुख पैरामीटर है कि तय है कि कितनी देर तक ले लेंगे, या तो मिलीसेकंड में या 'तेज', 'सामान्य', या 'धीमी' जोड़ सकते हैं), यह फ़ंक्शन को कॉल करेगा, जो remove() करता है।

9

यहाँ आसान तरीका है,

$('#somediv').fadeOut(300,function(){ $(this).remove(); })}; 

या

$('#somediv').fadeOut("slow",function(){ $(this).remove(); })}; 
संबंधित मुद्दे