Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 防止不必要地触发事件_Javascript_Jquery_Events - Fatal编程技术网

Javascript 防止不必要地触发事件

Javascript 防止不必要地触发事件,javascript,jquery,events,Javascript,Jquery,Events,这很好,但是如果我多次快速悬停/离开菜单的项,一旦我停止,我会看到它像悬停一样上下滑动 请观看这类视频捕获 ?如何防止这种情况发生?您可以使用停止当前动画。您还可以将两个事件处理程序组合起来,只需使用(它可以包含两个参数,第一个是在mouseenter上运行的函数,第二个是在mouseleave上运行的函数): 第一个参数是clearQueue,当您反复悬停时,它将停止动画无休止地排队。第二个参数是jumpToEnd,它强制任何当前运行的动画在启动新动画之前结束 这里有一个。这一切归结为您拥有

这很好,但是如果我多次快速悬停/离开菜单的
  • 项,一旦我停止,我会看到它像悬停一样上下滑动

    请观看这类视频捕获

    ?如何防止这种情况发生?

    您可以使用停止当前动画。您还可以将两个事件处理程序组合起来,只需使用(它可以包含两个参数,第一个是在
    mouseenter
    上运行的函数,第二个是在
    mouseleave
    上运行的函数):

    第一个参数是
    clearQueue
    ,当您反复悬停时,它将停止动画无休止地排队。第二个参数是
    jumpToEnd
    ,它强制任何当前运行的动画在启动新动画之前结束


    这里有一个。

    这一切归结为您拥有一个变量,该变量将存储滑动的状态,并在滑动已经发生时防止进一步的请求发生

    在滑动开始时设置标志,并使用回调取消设置标志

    $('#menu > li').hover(function() {
        $(this).find('ul').stop(true, true).slideDown();
    }, function() {
        $(this).find('ul').stop(true, true).slideUp();
    });
    

    第二个想法是由James Allardice在稍早的时候提出的,如果它能起作用,我更喜欢它。

    你介意使用简单的CSS吗?不,恐怕我需要它是js
    $('#menu > li').hover(function() {
        $(this).find('ul').stop(true, true).slideDown();
    }, function() {
        $(this).find('ul').stop(true, true).slideUp();
    });
    
    var closing = false;
    $('#menu > li').mouseleave(function(){
         closing = true;
         $(this).find('ul').slideUp(null, function(){
             closing = false;
         });
    });
    
    // then in the hover method you would just check the value of closing to see if to allow or not opening.