Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.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 - Fatal编程技术网

停止当前Javascript事件

停止当前Javascript事件,javascript,jquery,Javascript,Jquery,我有一个简单的JQuery任务列表。当我删除或添加一个项目时,将显示一条带有fadein、fadeout和delay JQuery方法的消息 整个应用程序运行良好,除了当我有许多项目,我想删除许多项目非常快,消息仍将继续显示一个接一个 我尝试使用e.stopPropagation()停止上一个事件,但它似乎不起作用 function clearMesg() { $(".mesg").stop().fadeIn(500).delay(500).fadeOut(50

我有一个简单的JQuery任务列表。当我删除或添加一个项目时,将显示一条带有fadein、fadeout和delay JQuery方法的消息

整个应用程序运行良好,除了当我有许多项目,我想删除许多项目非常快,消息仍将继续显示一个接一个

我尝试使用e.stopPropagation()停止上一个事件,但它似乎不起作用

function clearMesg() {            
     $(".mesg").stop().fadeIn(500).delay(500).fadeOut(500);
}

$(".del").on("click", function (e) {
      e.stopPropagation();

      $(this).parent().remove();

      $('.mesg').text("Deleted.");
      clearMesg();

});

您不需要停止上一个事件;在JavaScript中,事件排队并一个接一个地运行,因此最后一个事件处理程序将在当前事件处理程序运行之前完成。另一方面,使用jQuery运行的动画是异步运行的,因此其他事件处理程序将在动画进行时运行,从而导致动画重新启动

在启动另一个动画之前,可以使用jQuery的
:animated
选择器检查动画是否已经运行(请参阅):

function clearMesg() {
     let $mesg = $(".mesg");
     if (!$mesg.is(":animated")) {
          $(".mesg").stop().fadeIn(500).delay(500).fadeOut(500);
     }
}