slideDown和slideUp多次滑动的问题

427 阅读1分钟

在做导航栏滑动效果的时候,出现了多次滑动的问题。

上网找了原因,看了几个博客,学了一些新知识。

问题:

如图。

相关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 事件在鼠标指针进入任意子元素时也会被触发。

但是在我的代码中改了之后并没有感觉到有什么明显的变化。