jsFiddle
我使用一个自定义的下拉菜单,该菜单在jquery事件和动画上运行。
当我通过mouseenter激活下拉菜单几次时会出现问题,这会导致菜单向下滑动然后向上滑动几次。我尝试通过添加.stop(true)来修复它,这是成功的,但它导致了其他问题,如this.
我遵循了这个建议(jsFiddle Here),但它导致了更多没有吸引力的问题。
我需要一种方法来阻止一个函数被冗余地触发,但是仍然可以立即停止“向下滑动”,然后如果用户触发则“向上滑动”.mouseleave
我和自定义队列纠结了5个小时,没有成功:(
欢迎任何想法,建议和批评。
答案 0 :(得分:1)
基本上它归结为延迟事件处理程序的执行。
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以后,希望在该时间间隔内没有后续触发器。