2011-01-27 183 views
1

請考慮以下內容: 有一個面板(讓它是一個div元素)誰的高度是使用懸停功能控制的。動畫的唯一CSS屬性是高度。兩個動畫(鼠標懸停高度+ = 500px;鼠標懸出高度= 500px)的持續時間爲10秒。 你可以想象一下:在這20秒的時間內,你可以'不小心'滾動鼠標至少10次。修改懸停jquery功能

jquery做的是記住所有發生的事情(用鼠標),並鏈接一個不需要的動畫鏈表。

我需要你們幫我防止這種情況。

回答

0

很簡單:

  1. 定義一個單獨的布爾變量(可以稱其爲「動畫」),並將其設置爲true時的動畫效果開始。當動畫結束時,將其設置爲false。
  2. 在您的鼠標懸停/鼠標處理程序中,忽略動畫時發生的任何事件== true
  3. (可選):在您的動畫完成處理程序中,檢查鼠標是否超出了要監視和觸發的div如有必要,下一個動畫。
+0

你能請註明「動畫完成處理程序」 – Birowsky 2011-01-28 09:20:03

1

使用stop()(docs)方法停止動畫。

使用它作爲.stop(true,true)來清除隊列,並在開始新隊列之前跳到最後,儘管我不確定這是你想要的。

如果你的意圖是讓動畫完成,然後用not-selector(docs),並與is()(docs)方法只運行動畫,如果當前沒有動畫沿着animated-selector(docs)

這將防止在隊列中堆積。

if($(this).is(':not(:animated)')) { 
    // do the animation 
}