У меня есть фрагмент кода, который проверяет, есть ли у элемента класс, а если нет, класс 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».
Я меняю значения открытия / закрытия просто как обходной путь. Но это не решение проблемы.
Любая помощь очень ценится.