Javascript 在完成第一个任务后,有没有办法在另一个对象上调用jquery函数?
我想淡出对象1,淡出后删除一个类并添加一个。之后,在另一个对象上,对象2应该fadein,然后我给它分配一个类。我遇到的问题是,如果我触发事件的速度比fadein/fadeout快,那么对象将保持活动状态Javascript 在完成第一个任务后,有没有办法在另一个对象上调用jquery函数?,javascript,jquery,Javascript,Jquery,我想淡出对象1,淡出后删除一个类并添加一个。之后,在另一个对象上,对象2应该fadein,然后我给它分配一个类。我遇到的问题是,如果我触发事件的速度比fadein/fadeout快,那么对象将保持活动状态 $('.menuA').on("click", function () { $('.menuA').removeClass("blue accent-3 z-depth-2", 100); let clicked = $(th
$('.menuA').on("click", function () {
$('.menuA').removeClass("blue accent-3 z-depth-2", 100);
let clicked = $(this);
$('.menuA').promise().done(function () {
clicked.addClass("blue accent-3 z-depth-2", 100);
})
animatePanes($(this).attr("con"));
})
function animatePanes(pane) {
let paneOld = $('.pane-active');
paneOld.fadeOut(250).removeClass("pane-active").addClass("pane-inactive").promise().done(function () {
$('.' + pane).fadeIn(250).removeClass("pane-inactive").addClass("pane-active");
});
};
这是我的活动与功能。问题是,如果我单击fast并触发menuA上的事件,paneOld不会使类窗格处于非活动状态
我已经尝试过使用一个全局变量来检查事件是否正在运行,但它没有起作用,可能是因为我想错了
有没有办法禁用事件侦听器,直到事件完全完成
或者有更好的方法吗?您当然可以使用全局变量来实现这一点,正如您已经说过的。也许你放错地方了 我建议使用类似isAnimating=false和“禁用”click事件侦听器(如果其值为true)的方法。这样,您可以在所有动画完成后立即将isAnimating重置为false
var isAnimating = false;
$('.menuA').on("click", function() {
if (!isAnimating) {
$('.menuA').removeClass("blue accent-3 z-depth-2", 100);
let clicked = $(this);
$('.menuA').promise().done(function() {
clicked.addClass("blue accent-3 z-depth-2", 100);
})
animatePanes($(this).attr("con"));
isAnimating = true;
}
})
function animatePanes(pane) {
let paneOld = $('.pane-active');
paneOld.fadeOut(250).removeClass("pane-active").addClass("pane-inactive").promise().done(function() {
$('.' + pane).fadeIn(250).removeClass("pane-inactive").addClass("pane-active").promise().done(function() {
isAnimating = false;
});
});
}
哦,是的,我现在看到了。。。我把isAnimating=false不放在done语句中。非常感谢。