阻止Javascript函数多次触发

的jsfiddle
我使用一个定制的下拉菜单,它在jquery事件和动画上运行。
当我通过mouseenter激活下拉菜单几次时会出现问题,这会导致菜单向下滑动然后向上滑动几次。 我尝试通过添加.stop(true)来修复它,这是成功的,但它导致了其他类似的问题。 我遵循了这个建议( jsFiddle Here ),但它会导致更多没有吸引力的问题。

我需要的是一种方法来阻止函数冗余启动,但仍然可以立即停止“向下滑动”,然后如果用户触发则“向上滑动”.mouseleave

我纠结了自定义队列5小时,没有成功:(
任何想法,建议和批评都是受欢迎的。

基本上它归结为延迟事件处理程序的执行。

var mouseoverTimer = null; $('.elem').mouseover(function(){ clearTimeout(mouseoverTimer); //ignore previous trigger mouseoverTimer = setTimeout(function(){ //wait to execute handler again //execute actual handler here }, 10); }); 

如果在指定的时间间隔内调用相同的处理程序,则取消挂起的执行并再次排队以执行10ms以后希望在该时间间隔内没有后续触发器。