Jquery возвращает hasClass true перед добавлением класса - PullRequest
0 голосов
/ 30 октября 2019

У меня есть фрагмент кода, который проверяет, есть ли у элемента класс, а если нет, класс get добавляется.

Однако hasClass возвращает true, даже если класс отсутствует, следовательно,класс не добавляется.

NavigationView.prototype.handleMobileNavigationToggle = function() {
    if (this.$body.hasClass('mobile-nav-open')) {
      return this.toggleMobileNavigation('close');
    } else {
      return this.toggleMobileNavigation('open');
    }
  };

  NavigationView.prototype.toggleMobileNavigation = function(direction) {
    var $navigation_submenu_toggle;
    $navigation_submenu_toggle = $(event.currentTarget).find('.navigation-submenu');
    if (direction === 'open') {
      console.log("Direction Open");
      this.$body.addClass('mobile-nav-open lock-scroll');
      this.$navigationContent.addClass('visible');
      this.$navigationWrapper.addClass('visible background');
      $navigation_submenu_toggle.attr('aria-expanded', true);
      return this.setTierHeight();
    } else if (direction === 'close') {
      console.log("Direction Close");
      this.$navigationContent.removeAttr('style');
      this.$body.removeClass('mobile-nav-open');
      this.$navigationContent.removeClass('visible');
      $navigation_submenu_toggle.attr('aria-expanded', false);
      if (Modernizr.csstransitions) {
        this.$navigationWrapper.removeClass('background').one(this.transitionend, (function(_this) {
          return function() {
            _this.$navigationWrapper.removeClass('visible');
            $navigation_submenu_toggle.attr('aria-expanded', false);
            return _this.$body.removeClass('lock-scroll');
          };
        })(this));
      } else {
        this.$navigationWrapper.removeClass('visible background');
        $navigation_submenu_toggle.attr('aria-expanded', false);
        this.$body.removeClass('lock-scroll');
      }
      return this.$navigationContent.find('.has-dropdown-open').removeClass('has-dropdown-open').find('.navigation-submenu-visible').removeClass('navigation-submenu-visible');
    }
  };

В этом случае «mobile-nav-open» возвращается как true, поэтому неверное значение аргумента «direction» передается в функцию «toggleMobileNavigation».

Я меняю значения открытия / закрытия просто как обходной путь. Но это не решение проблемы.

Любая помощь очень ценится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...