在做导航栏滑动效果的时候,出现了多次滑动的问题。
上网找了原因,看了几个博客,学了一些新知识。
问题:
如图。
相关JS代码:
$(function() {
$('.bar>li').mouseover(function() {
$(this).children('ul').slideDown(200);
});
$('.bar>li').mouseout(function() {
$(this).children('ul').slideUp(200);
});
})
1. 利用stop方法停止当前动画
语法是 $(selector).stop(stopAll,goToEnd)
两个参数都是可选的,第一个stopAll 参数规定是否应该清除动画队列。默认是 false,即仅停止活动的动画,允许任何排入队列的动画向后执行。第二个参数goToEnd 参数规定是否立即完成当前动画。默认是 false。
我修改了两行代码,加上了stop方法,第一个参数我写了true,第二个写了false。
$(this).children('ul').stop(true,false).slideDown(200);
$(this).children('ul').stop(true,false).slideUp(200);
加上之后,就不会再多次滑动了。
2.mouseover和mouseenter的区别
与 mouseover 事件不同,mouseenter 事件只有在鼠标指针进入被选元素时被触发,mouseover 事件在鼠标指针进入任意子元素时也会被触发。
但是在我的代码中改了之后并没有感觉到有什么明显的变化。