Javascript 在完成第一个任务后,有没有办法在另一个对象上调用jquery函数?

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

我想淡出对象1,淡出后删除一个类并添加一个。之后,在另一个对象上,对象2应该fadein,然后我给它分配一个类。我遇到的问题是,如果我触发事件的速度比fadein/fadeout快,那么对象将保持活动状态



        $('.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语句中。非常感谢。