2011-11-29 18 views
6

यहाँ छोटे कोड हैjquery एनिमेट फ़ंक्शन आंतरिक रूप से कैसे काम करता है?

<div id="clickme"> 
Click here 
</div> 
<img id="book" src="book.png" alt="" width="100" height="123" 
style="position: relative; left: 10px;" /> 

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

यह स्पष्ट है से कोड बाईं बढ़ती जा रही है और अस्पष्टता .25 किया जाएगा। jquery ऐसा करने का प्रबंधन कैसे करता है ... jquery आंतरिक रूप से बाएं को बढ़ाने के लिए एक लूप निष्पादित करता है और जब तक यह बनता है तब तक अस्पष्टता बदलता है .25। मार्गदर्शन की आवश्यकता है। धन्यवाद

+4

स्वयं देखें, https://github.com/jquery/jquery/blob/master/src/ effects.js # L124 – Andrew

उत्तर

5

टाइमर का उपयोग करके निर्धारित अवधि में यह धीरे-धीरे बढ़ता है (या घटता है) मूल्य। यह लूप का उपयोग नहीं कर सकता है क्योंकि अगर ऐसा होता है तो यह मुख्य जेएस थ्रेड को ब्लॉक/फ्रीज करता है और आप एनीमेशन नहीं देख पाएंगे। जेएस में सबकुछ घटनाओं के माध्यम से एसिंक्रोनस (या होना चाहिए) है।

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