2014-04-20 50 views
2

我有四個塊的圖片,我需要爲它們設置動畫:當你將鼠標放在塊上時,它會下降; 當你把它拿走它上升。現在我有我的鼠標移動非常快塊開始排隊我的行爲和一些次後,似乎這個問題就像他們移動沒有我 my blocks-pictures正確的動畫jquery

JS代碼:

$('.blocks').hover(up, down); 
    function up() { 
      $(this) 
      .animate ({ 
       top: '+=400px'}, 1000); 
    } 

function down() { 
    $(this).delay(300) 
     .animate ({ 
      top: '-=400px'}, 800); 
} 
` 

回答

0

使用此

$('.blocks').hover(up, down); 

function up() { 
     $(this).stop().animate({ 
      top: '+=400px' 
     }, 1000); 
} 

function down() { 
     $(this).stop().delay(300).animate({ 
      top: '-=400px' 
     }, 800); 
} 
0

您需要排隊一個新的動畫來避免這個問題之前,停止你的動畫。您可以使用它通過的MouseEnter觸發或懸停事件jQuery的.animate()函數時,在http://api.jquery.com/stop/

0

這是很常見的找到更多的細節。這一切都很好,但這意味着我們需要考慮多次觸發的事件。

解決方案: 使用jQuery的stop()函數docs

例子:

$('.blocks').hover(up, down); 

function up() { 
    $(this).stop().animate ({ top: '+=400px' }, 1000); 
} 

function down() { 
    $(this).stop().delay(300).animate ({ top: '-=400px'}, 800); 
} 

克里斯Coyier已經撰寫了有關如何應對這樣的好文章。
http://css-tricks.com/full-jquery-animations/

+0

感謝您的有用的鏈接,但我仍然不明白如何using' jQuery的停止()function'使塊,當你停止動畫它向右移動,原因塊開始行爲本身奇怪移動只漲不下來400px,但兩次上漲800px例如。 – user2950593

+0

不完全確定你的意思,如果你用你的例子做一個jsfiddle,我會爲你看看它。 @ user2950593 – aludvigsen