2011-07-18 50 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,但这会导致元素跳到结尾,这会破坏动画的平滑度。 –