jquery 中使用slideDown(),怎么避免动画重复??

$('#navli').hover(function(){$(this).children('dl').slideDown(300);},function(){$(thi... $('#nav li').hover(function(){ $(this).children('dl').slideDown(300); },function(){ $(this).children('dl').slideUp(300); })如上代码 当鼠标移动很快的时候动画会不停地反复 怎么破??求解?? 展开
 我来答
echoshili
推荐于2016-09-06 · TA获得超过7.4万个赞
知道大有可为答主
回答量:5.1万
采纳率:18%
帮助的人:5571万
展开全部
jQuery 可以通过调用 animate 方法添加动画效果, 而且还提供了一套别名, 使用起来很是方便. 其中 slideDown和 slideUp 两方法的作用是纵向展开和卷起一个页面元素, 被使用的几率很高, 却一直存在一个小问题.如果目标元素是被外部事件驱动, 当鼠标快速地连续触发外部元素事件, 动画会滞后的反复执行.

其实很简单, 只需在触发元素上的事件设置为延迟处理, 即可避免滞后反复执行的问题. 例如: 当鼠标滑过按钮后 0.2 秒, 菜单才会展开, 如果鼠标离开按钮, 展开的处理将被终止. 也就是说, 想要展开菜单鼠标必须有 0.2 秒的事件停留在按钮上, 那么迅速地划过按钮是无法执行展开事件的. 卷起也是如此.
匿名用户
2013-10-13
展开全部
$('#nav li').hover(function(){
$(this).children('dl').stop(true,false).slideDown(300);
},
function(){
$(this).children('dl').stop(true,false).slideUp(300);
})
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-10-13
展开全部
加一个判断条件is(':animated')试试,应该是可以的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-10-13
展开全部
徐总的答案肯定正确啊!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式