我有一个嵌套的div。当用户将鼠标悬停在父div上时,子div变为可见。 在鼠标移出时,孩子div会回到隐形状态。
我遇到的麻烦是,如果我快速鼠标悬停在我的父母div上5次,则slideToggle效果会播放5次,我必须等到它完成动画。
所以,我在.Stop()
之前添加了slideDown()
,但现在,如果我鼠标之前,则子div达到全高,那么当前高度将成为新的高度。所以下次我鼠标移动时我只能看到它(或根本没有看到,取决于我在父div上移除鼠标的时间)
如何解决此问题?
我很快就嘲笑了demo on JsFiddle
感谢。
答案 0 :(得分:2)
您需要将代码更改为:
$('div#div2', this).not(":animated").slideDown();
.not(“:animated”)将告诉jQuery仅选择当前未设置动画的元素(在匹配集中)。这可以确保您的元素不会被双重动画。
与.stop()不同,这个不会让你的动画不完整,所以高度问题就这样纠正了。
jsFiddle:http://jsfiddle.net/YrRe4/1/
答案 1 :(得分:0)
您还可以将.stop()的布尔参数定义为true。 .stop(true,true)它将结束队列并在动画结束时跳转。