2011-07-18 47 views
0

我有一個嵌套的div。當用戶將鼠標移到父div上時,子div變爲可見。 在鼠標移出時,子div會回到隱身狀態。高度切換不失身高jquery

我遇到的麻煩是,如果我快速將鼠標懸停在我父母的div上說5次,slideToggle效果播放5次,我必須等到它完成動畫。

所以,我slideDown()前添加一個.Stop()但現在,如果我鼠標移出孩子的div達到滿高度,即當前高度成爲它的新的高度。所以下一次我把鼠標懸停在我看不到的地方(或者什麼也沒有,這取決於我什麼時候在父div上移除鼠標)

我該如何解決這個問題?

我趕緊也嘲笑了demo on JsFiddle

感謝。

回答

2

你需要改變你的代碼看起來像這樣:

$('div#div2', this).not(":animated").slideDown(); 

。不是(「:動畫」)將告訴jQuery來只選擇沒有被動畫元素(設置在匹配)。這確保您的元素不會被雙重動畫。

不像.stop()這個不會讓你的動畫不完整,所以高度問題就這樣糾正了。

的jsfiddle:http://jsfiddle.net/YrRe4/1/

+0

你真了不起!謝謝。 – LocustHorde

0

您也可以定義.stop布爾參數()同時擁有真。 .stop(true,true)它將結束隊列並在動畫結束時跳轉。

+0

是true,但這會導致元素跳到結尾,這會破壞動畫的平滑度。 –