2012-01-08 6 views
5

मैं स्लाइड करने के लिए div बनाने की कोशिश कर रहा हूं और होवर i.e. माउस क्रमशः दर्ज और छोड़ देता हूं। हालांकि, जब मैंने कई बार अंदर और बाहर आच्छादित किया, तो div मूल रूप से होवर के समय तक मूल रूप से आगे बढ़ रहा था। कृपया इस jsFiddle example देखें।jQuery एनीमेशन: एनिमेटिंग रोकें एक बार माउस आउट

जैसा कि आपने शायद अनुमान लगाया है, मैं माउस के तत्व के बाहर होने के बाद div स्टॉप (यानी स्लाइड किया गया) बनाने की उम्मीद कर रहा हूं, भले ही मैंने इसे कितनी बार देखा है। मुझे लगता है कि jQuery एनीमेशन के बारे में मेरी समझ में कुछ याद आ रही है।

$("#state-slider").hover(function() { 
    $(this).animate({ 
    left: '0' 
    }, 500); 
}, function() { 
    $(this).animate({ left: "-270" }, 500); 
}); 

धन्यवाद।

उत्तर

17

आपको jQuery .stop() function की आवश्यकता है। किसी भी चल रहे एनिमेशन को बाधित करने के लिए, एक नई एनीमेशन शुरू करने से पहले इसे अपने कमांड चेन में डालें।

$('#state-slider').hover(function() { 
    $(this).stop().animate({ left: 0 }, 500); 
}, function() { 
    $(this).stop().animate({ left: -270 }, 500); 
}); 

Working jsFiddle =)

+0

यह पूरी तरह से काम करता है। धन्यवाद! क्या आपको पता है कि हमें माउस दर्ज करने पर '.stop() 'की आवश्यकता क्यों है? मुझे पता है कि हमें इसे प्राप्त करने की ज़रूरत है क्योंकि अन्यथा @ 3nigma के जवाब में "कूद" होगी; हालांकि, मुझे यकीन नहीं है कि इसके पीछे तर्क है। – moey

+2

@ Siku-Siku.Com: माउस-एंटर और माउस-स्टॉप दोनों पर '.stop()' का उपयोग करने का कारण स्पष्ट हो जाता है यदि आप अपने माउस को div पर घुमाते हैं, इसे दूर ले जाएं और फिर तुरंत वापस आएं। उस उपयोगकर्ता से क्या उम्मीद है कि "चारों ओर मुड़ने" के लिए div है, यानी * यह रोकें कि यह क्या कर रहा था और इसके बजाय नई चीज़ *। यह ठीक है '.stop() 'करता है। स्पष्टीकरण के लिए –

+0

+1! – moey

1
$("#state-slider").hover(function() { 
    $(this).animate({ 
    left: '0' 
    }, 500); 
}, function() { 
    $(this).stop(true,true).animate({ left: "-270" }, 500); 
}); 

DEMO

http://api.jquery.com/stop/

+0

धन्यवाद, @ 3nigma। हालांकि, ध्यान दें कि जब आप माउस 'div' दर्ज करते हैं और तुरंत बाहर होते हैं तो "कूद" होता है। मुझे लगता है कि हमें माउस दर्ज करने पर भी '.stop() 'की आवश्यकता है? – moey

+0

आह, मुझे अब मिल गया: "कूदो" को रोकने के लिए, 'स्टॉप (सत्य, सत्य)' के बजाय 'स्टॉप (सत्य)' का उपयोग करें। – moey

0

वहाँ एक उदाहरण

http://jsfiddle.net/amkrtchyan/TQz5U/1/

है

और jQuery कोड

$(function() { 
    $("#state-slider").hover(function() { 
     $(this).stop(true,true).animate({ 
      left: '0' 
     }, 500); 
    }, function() { 
     $(this).stop(true,true).animate({ left: "-270" }, 500); 
    }); 
}); 
संबंधित मुद्दे