2008-11-21 9 views
81

मेरे पास जावास्क्रिप्ट की यह पंक्ति है और मैं जो व्यवहार देख रहा हूं वह यह है कि selectedLi तुरंत "स्लाइडिंग" के बिना गायब हो जाता है। यह वह व्यवहार नहीं है जिसकी मुझे उम्मीद थी।jQuery स्लाइडअप()। हटाएं() को हटाने से पहले स्लाइडअप एनीमेशन दिखाई नहीं देता है

मुझे क्या करना चाहिए ताकि selectedLi इसे हटाए जाने से पहले स्लाइड हो जाए?

selectedLi.slideUp("normal").remove(); 

उत्तर

174

स्लाइडअप को कॉलबैक तर्क में निकालने के लिए कॉल डालकर इसे ठीक करने में सक्षम हो सकता है?

जैसे

selectedLi.slideUp("normal", function() { $(this).remove(); }); 
+3

ध्यान दें कि "धीमी" और "तेज "केवल गति हैं। अन्य गति को या तो मिलीसेकंड में होना चाहिए या वे 400 तक डिफ़ॉल्ट होंगे। Http://www.keyframesandcode.com/resources/javascript/deconstructed/jquery/#speeds – bendman

-1
selectedLi.slideUp(200, this.remove); 
+1

मैंने परीक्षण किया - यह स्लाइडिंग के बाद तत्व को नहीं हटाता है। –

+0

प्रभावशाली तत्व तत्व को छुपाता है, लेकिन वास्तव में इसे डोम से नहीं हटाता है। – andreszs

11

आप अधिक स्पष्ट करने की आवश्यकता है: बल्कि "इस" (जो मैं मानता हूँ काम करना चाहिए) कह रही है की तुलना में आप इस करना चाहिए:

$("#yourdiv").slideUp(1000, function() { 
    $(this).remove(); 
}); 
+1

SORRY = मैं अपनी आईडी को हटाने के लिए भूल गया, होना चाहिए: $ ('# yourdiv')। स्लाइडअप (1000, फ़ंक्शन() {$ ('# yourdiv')। हटाएं();}); – Blake

+12

$ ("# yourdiv") के बजाय $ (यह) का उपयोग करना अधिक अनुकूलित है क्योंकि jQuery को नोड की तलाश करने की आवश्यकता नहीं है। – MaximeBernard

+0

'$ (यह)' के बजाय '$ (" # yourdiv ") का उपयोग करना पूरी तरह से अनावश्यक है और यही कारण है कि यह कोड ओपी की समस्या को हल नहीं करता है। यह कोड समस्या को हल करता है क्योंकि यह 'पूर्ण' कॉलबैक का उपयोग करता है। – Gavin

5

सरलतम रास्ता स्लाइडअप के अंदर "निकालें()" फ़ंक्शन को कॉल कर रहा है जैसे कि पैरामीटर के रूप में अन्य पैरामीटर के रूप में कहा गया है, इस उदाहरण के रूप में:

$("#yourdiv").slideUp("normal", function() { 
    $(this).remove(); 
}); 

स्लाइडअप समाप्त होने से पहले निष्पादित() को निष्पादित करने के लिए अज्ञात फ़ंक्शन() के अंदर इसे कॉल करना आवश्यक है। JQuery फ़ंक्शन "वादा()" का उपयोग करने का एक और समान तरीका है। जो स्वतः स्पष्ट कोड की तरह, मेरे जैसे लोगों के लिए बेहतर;)

$("#yourdiv").slideUp("normal").promise().done(function() { 
    $(this).remove(); 
}); 
1

वादों का उपयोग करके आप भी प्राप्त करने के लिए समाप्त हो गया है, जैसे कई एनिमेशन के लिए प्रतीक्षा कर सकते हैं:

selectedLi.slideUp({duration: 5000, queue: false}) 
.fadeOut({duration: 3000, queue: false}) 
.promise().done(function() { 
    selectedLi.remove() 
}) 
संबंधित मुद्दे