Jquery 有没有办法只在x毫秒后对鼠标进行操作,并且只在鼠标停留在上方时才进行操作?

Jquery 有没有办法只在x毫秒后对鼠标进行操作,并且只在鼠标停留在上方时才进行操作?,jquery,animation,Jquery,Animation,我现在有一个我需要做的工作版本,只是有时候看起来有问题。基本上是一个可扩展的手风琴,在任何时候都只能扩展一个子列表 这就是我所知道的,当你从上到下缓慢移动时,问题就出现了。当一个元素关闭并且光标碰到下面的元素时,它会跳转 jQuery(文档).ready(函数(){ $(“.nav li”)。悬停( 函数(){ $(this.css('cursor','pointer'); }, 函数(){ $(this.css('cursor','auto'); } ); $('.nav').find('

我现在有一个我需要做的工作版本,只是有时候看起来有问题。基本上是一个可扩展的手风琴,在任何时候都只能扩展一个子列表

这就是我所知道的,当你从上到下缓慢移动时,问题就出现了。当一个元素关闭并且光标碰到下面的元素时,它会跳转

jQuery(文档).ready(函数(){
$(“.nav li”)。悬停(
函数(){
$(this.css('cursor','pointer');
}, 
函数(){
$(this.css('cursor','auto');
}
);
$('.nav').find('ul').hide().end();
$('.nav')。查找('li')。悬停(
函数(){
$(this).children(“ul”).stop(true,true).slideDown('500'))
},
函数(){
$(this).children(“ul”).stop(true,true).slideUp('500'))
}        
);
});

  • 清单项目1
    • 子列表1第1项
    • 分列表1第2项
    • 分列表1第3项
    • 分列表1第4项
    • 分列表1项目5
    • 分列表1第6项
  • 清单项目2
    • 分列表2第1项
    • 次级列表2项目2
    • 次级列表2项目3
  • 清单项目3
    • 分列表3第1项
    • 次级列表3项目2
    • 分列表3项目3
    • 分列表3项目4
    • 分列表3项目5
    • 分列表3项目6
    • 分列表3项目7
    • 分列表3项目8

您可能想看看这个答案:


这里的建议是使用HoverIntent插件,我个人会为此编写自己的代码,而不是像德雷克建议的那样使用HoverIntent,因为这样我会学到更多

我会将每个对象的数据属性设置为0,并将其增加x个时间量。您可能希望检测mouseover并将另一个数据属性设置为true(您在函数中使用此属性,该函数将时间属性添加1;如果设置为true,则鼠标位于元素上方,您希望增加该属性);当鼠标移离元素时,将该数据属性设置为false并重置计时器属性

当timer属性达到某个数字时,您可以在x时间后执行函数或任何您想执行的操作。

只需添加
延迟(500)。
在slideDown和slideUp调用之前-
500
是毫秒数

$('.nav')。查找('li')。悬停(
函数(){
$(this).children(“ul”).stop(true,true).delay(500).slideDown('500'))
},
函数(){
$(this).children(“ul”).stop(true,true).delay(500).slideUp('500'))
}        
);

那应该行

这正是我所需要的,我将延迟设置得比slideUp和slideDown的动画长一点,它看起来很完美,不再有不稳定的行为。谢谢。虽然@Hannes的建议有效,但我仍然会研究这篇文章和hoverintent插件。我是jquery新手,以前从未使用过插件,所以现在是开始的好时机。@Hannes solution完成了我现在需要的工作。但是,我是jquery新手,不知道设置数据属性是什么,甚至不知道如何设置。但我想知道,所以我会尝试进一步研究,谢谢。