【问题标题】:jquery menu slideup too slow?jquery 菜单上滑太慢?
【发布时间】:2014-01-08 00:30:32
【问题描述】:

我有一个 li 菜单,当 div 悬停在右侧的子菜单上时,我正在使用它。然后,当 div 不再悬停时,它会像您期望的那样向上滑动。但是,似乎存在一个问题,如果鼠标悬停在另一个 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,我会扔一个。如果您将鼠标悬停在“玛雅印加阿兹特克农业”选项卡上,将会出现一个侧边菜单。接下来的 3 个选项卡也将执行此操作。如果您将鼠标从一个选项卡快速移动到下一个选项卡,前一个选项卡将保持打开状态。这就是我想要解决的问题

【问题讨论】:

  • 我认为(不)工作的JSFiddle 会很棒:),所以我们可以看到出了什么问题并(也许)解决了问题。
  • 好的,我会在运行时发布一个 jfiddle..
  • jquery 上真的有'medium' 持续时间吗?上次我检查有效的持续时间字符串是'slow''fast'。除此之外(或随机字符串值)jquery 会给它一个默认的 400 毫秒。

标签: jquery


【解决方案1】:

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

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

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

【讨论】:

  • 我实际上在你发帖之前就发现了这一点! .stop 解决了这个问题。无论如何谢谢;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-21
  • 2015-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多