2010-06-06 27 views
5

यह अजीब बात है। मेरे पास एक एनीमेशन है जो शुरू होता है जब मैं एक डीवी पर होवर करता हूं। इस div में मेरे पास एक और स्थिति पूर्ण है कि जब तक माउस मुख्य div पर नहीं रहता तब तक मैं आगे बढ़ना चाहता हूं और जब मैं मुख्य div से बाहर जाता हूं तो आपकी स्थिति में नीचे जाता हूं। एक साधारण होवर प्रभाव। मैंने इस फ़ंक्शन को लिखा है जो एक अजीब बग को अच्छी तरह से काम करता है।Jquery एनिमेट नीचे समस्या

  var inside = $('.inside') 

     inside.hover(function() { 
      $(this).children(".coll_base").stop().animate({ 
       bottom:'+=30px' 
      },"slow") 
      }, function() { 
      $(this).children(".coll_base").stop().animate({ 
       bottom:'-=30px' 
      },"slow"); 
      }); 

i + = 30 और की जरूरत है - = 30 क्योंकि मैं अलग तल के साथ div की एक सीमा के लिए इस समारोह आवेदन करना होगा। समस्या यह है कि यदि मैं डीवीवी को सही तरीके से विभाजित करता हूं और बाहर जाता हूं लेकिन जब नीचे जाता है तो वह प्रत्येक एनीमेशन के नीचे के मूल्य को कम करता है। यदि मैं मुख्य div से ऊपर और नीचे जाता हूं तो मुझे लगता है कि एनिमेटेड div मुख्य div से भी नीचे चला जाता है। मुझे लगता है कि मुझे इस बग को हल करने के लिए कुछ याद आती है। किसी भी मदद के लिए धन्यवाद

उत्तर

5

यदि bottom0 प्रारंभ में नहीं है, तो आप प्रारंभिक नीचे मान स्टोर कर सकते हैं, और दूसरे फ़ंक्शन में इसका उपयोग कर सकते हैं। (यदि प्रारंभिक bottom0 है, तो बस का उपयोग करें कि।)

नीचे दिए गए उदाहरण में, प्रारंभिक bottom स्थिति inside के लिए data() विशेषता का उपयोग संग्रहीत किया जाता है, तो यह दूसरा हैंडलर में लिया गया है मूल स्थिति में वापस जाने के लिए ।

लाइव उदाहरण:http://jsfiddle.net/VAsZZ/

var inside = $('.inside'); 

inside.hover(
    function() { 
     if(!inside.data('bottom')) { 
      inside.data('bottom',$(this).children(".coll_base").css('bottom')); 
     } 
     $(this).children(".coll_base").stop().animate({ bottom:'+=30px' },"slow") 
    }, 
    function() { 
     $(this).children(".coll_base").stop().animate({bottom:$(this).data('bottom') },"slow"); 
    } 
);​ 
+0

धन्यवाद! यह बहुत अच्छा काम करता है! – andrea

+0

@andrea - आपका स्वागत है। : ओ) – user113716

0

मुझे नहीं लगता कि आप रिश्तेदार का उपयोग कर सकते हैं (- = 30px और + = 30px), इस मामले में मूल्यों के रूप में एनीमेशन किसी भी मनमाने ढंग से बिंदु पर बंद कर सकते हैं जो इसका अनुसरण करने वाले एनिमेशन को फेंक देगा। मिलान किए गए सेट पर प्रत्येक() को कॉल करने के लिए सर्वश्रेष्ठ, सही ऑफसेट की गणना करें और सीधे अपने होवर फ़ंक्शन में मानों को पास करें।

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