使用jquery mousemove和setTimeout以及clearTimeout来显示/隐藏菜单

时间:2011-04-01 08:08:57

标签: jquery

我在下面粘贴了一些代码,这些代码似乎是在mousemove上显示菜单的常用方法。似乎随着鼠标继续移动,超时的持续时间增加。那是怎么回事?有没有理由说明清除工作不起作用?

var timer;
    $(document).mousemove(function() {
        if (timer) {
            clearTimeout(timer);
            timer = 0;
        }

        $('.navi a, a.left, a.right').animate({top:'0px'},'fast');
        timer = setTimeout(function() {
           $('.navi a, a.left, a.right').animate({top:'50px'},'fast');
        }, 1000)
    });

1 个答案:

答案 0 :(得分:1)

问题是,你正在开始动画在每次mousemove事件中反复向上移动。由于jquery的动画排队,对同一对象的animate()的每次调用都会排队,所以你在延迟函数中的最后animate()调用(再次向下移动元素)必须等到所有'up' '动画已完成。

请参阅this fiddle以获得快速解决方法