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