jquery菜单滑动太慢了?

时间:2014-01-08 00:30:33

标签: jquery

我有一个li菜单我正在使用当菜单悬停在子菜单上滑过右侧时。然后当div不再被徘徊时,它会像你期望的那样向上滑动。然而,似乎存在一个问题,即如果鼠标悬停到另一个div而最后一个仍在向上滑动,那么最后一个将不会完成关闭并且将打开2个子菜单​​。如果我慢慢移动鼠标或将滑动速度更改为0,那么它可以工作,但是如果可以的话我想要滑动动画。

这是悬停功能:

  $(listitem).hover(

  function () {

    listID = $(this).find("ul");
        $(listID).slideDown('medium',function() {
    $(this).clearQueue();
});

     }, 
     function () {
    listID = $(this).find("ul");
        $(listID).slideUp(0,function() {
    $(this).clearQueue();
});

     } );

);

http://mayaincaaztec.com/

您可以查看我正在处理的网站,而不是发布jfiddle。如果需要一个jfiddle,我会抛出一个。如果您将鼠标悬停在“Maya Inca Aztec Agriculture”选项卡上,则会显示侧边菜单。接下来的3个标签也会这样做。如果将鼠标从一个选项卡快速移动到下一个选项卡,则前一个选项卡将保持打开状态。多数民众赞成我想解决的问题

1 个答案:

答案 0 :(得分:1)

如果在slideDown()完成之前调用slideUp(),则对clearQueue()的调用会从队列中删除slideDown(),因此该元素仍然可见。你想要做的是在开始下一个动画之前停止动画,如下所示:

$(listitem).hover(function () {
    $($(this).find("ul")).stop().slideDown('medium');
}, function () {
    $($(this).find("ul")).stop().slideUp(0);
});

但如果你真的想要slideUp(0),你也可以使用.hide()