2011-03-22 19 views
25

मैं jQuery 1.5.1 का उपयोग कर रहा यह मेरा कोड है:एनिमेट का कॉलबैक फ़ंक्शन (पूर्ण) प्रारंभ में निष्पादित किया गया?

$('.cellcontent').animate({ 
    left: '-=190'}, { 
    easing: alert('start ani'), 
    duration: 5000, 
    complete: alert('end ani')}); 

से पहले एनीमेशन शुरू होता है मैं दोनों अलर्ट प्राप्त !? मैं एनीमेशन समाप्त होने के बाद पूरा कार्य शुरू करना चाहता हूं। कोई विचार?

+0

http://api.jquery.com/animate –

उत्तर

28

आपको कॉल करने के लिए एक फ़ंक्शन पास करने की आवश्यकता है। इसके बजाय आप फ़ंक्शन को कॉल कर रहे हैं।

complete: function() { alert('end ani'); } 
9

आपको पूरा करने के लिए एक फ़ंक्शन पास करने की आवश्यकता है।

इस प्रयास करें:

$('.cellcontent').animate({ 
    left: '-=190'}, { 
    easing: alert('start ani'), 
    duration: 5000, 
    complete: function() { alert('end ani') } 
}); 

पूरा के बाद से एक समारोह की उम्मीद है, यह कोड आप इसे पारित एक समारोह उद्देश्य यह है कि इसे वापस काम पूरा हो जाने के लिए कॉल कर सकते हैं पाने के लिए निष्पादित करता है।

+0

'easing' अभी भी गलत है। –

+0

हां यह है, लेकिन सवाल से ओपी जानना चाहता था कि एनीमेशन कब शुरू हुआ, और यह दिखाएगा। –

+0

यह काम करेगा, लेकिन यह अभी भी गलत है। 'अलर्ट()' रिटर्न 'अपरिभाषित' जो 'easing' को पास किया जाता है, यही कारण है कि यह काम करता है। यदि आप जानना चाहते हैं कि यह कब शुरू हुआ, तो '.animate() 'कॉल से पहले' अलर्ट 'डालें। –

1

एक समारोह में उन्हें घोषित पहले, अन्यथा विधि तुरन्त कहा जाता है:

var onComplete = function() { 
    alert('end ani'); 
}; 

फिर उन्हें()

$('.cellcontent').animate({ 
    left: '-=190'}, { 
    easing: 'slow', 
    duration: 5000, 
    complete: onComplete //<-- function is passed as a variable, not called directly 
}); 

या बिना फोन उन्हें एक समारोह में सीधे लपेट (कम इसे बहुत कॉल करते समय पठनीय और धीमी):

$('.cellcontent').animate({ 
    left: '-=190'}, { 
    easing: 'slow', 
    duration: 5000, 
    complete: function() { 
     alert('end ani'); 
    } 
}); 
+0

'easing' अभी भी गलत है।यह कोड काम नहीं करता है। –

+0

आसान सामान्य रूप से एक स्ट्रिंग है, इस मामले में मेरे पास कोई विचार नहीं है कि ओपी के इरादे क्या हैं या वह इस कोड पर कैसे पहुंचे। –

+0

अब मुझे एक त्रुटि मिलती है: d.easing [j || के] एक समारोह नहीं है ?? – Overbeeke

22

मुझे दो चीजों को गलत लगता है।

एक, easing होना चाहिए:

A string indicating which easing function to use for the transition

और complete एक समारोह होना चाहिए।

http://api.jquery.com/animate

alert('start ani'); 
$('.cellcontent').animate({ 
    left: '-=190' 
    }, 
    { 
    easing: 'swing', 
    duration: 5000, 
    complete: function(){ 
     alert('end ani'); 
    } 
}); 
-1
$('.cellcontent').animate({ 
    left: '-=190', 
    easing: 'slow', 
    duration: 5000, 
    function() { 
    alert('end ani'); 
    } 
}); 
0

मुझे लगता है कि आप की जरूरत "पूर्ण" न?

slideToggle(
 
\t \t \t \t \t "fast","swing", function(){ 
 
\t \t \t \t \t \t \t // your code here 
 
\t \t \t \t \t \t } 
 
\t \t \t \t);

3

बेस्ट समाधान यह है।

$('.cellcontent').animate({ 
    left: '-=190'}, { 
    easing: alert('start ani') 
}, duration).promise().done(function() { 
    alert('end animation'); 
}); 
2
jquery docs से

:

$("#clickme").click(function() { 
    $("#book").animate({ 
    opacity: 0.25, 
    left: "+=50", 
    height: "toggle" 
    }, 5000, function() { 
    // Animation complete. 
    }); 
}); 
+0

यह सबसे छोटा संभव समाधान है। – morning

संबंधित मुद्दे