Somehow the if statement does not work, although the else part does work. In the given example console logs "menu toggled" and "menu toggled, else works", but "menu toggled, if works" is not triggered. What am I missing? Thanks in advance!
var body = document.body;
var menuToggle = document.querySelector('.menuButton');
var menuActive = "menu-active";
var color = "color";
var menu = document.querySelector('.menu');
$(menuToggle).on('click', function(e) {
e.preventDefault();
$(menu).toggleClass(menuActive);
console.log('menu toggled');
if ($(menu).is(menuActive)) {
console.log('menu toggled, if works');
$(body).addClass(color);
} else {
console.log('menu toggled, else works');
$(body).removeClass(color);
}
});
.color {
background: orange;
}
.menu-active {
outline: 1px solid blue;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.0/jquery.min.js"></script>
<button class="menuButton">menu</button>
<nav class="menu" id="menu" aria-label="Main menu">
<ul class="main-menu">
<li><a href="#">service</a></li>
<li><a href="#">about</a></li>
<li><a href="#">contact</a></li>
</ul>
</nav>
Using jQuery because with vanilla JavaScript cant get menu working on older devices (i.e. iOS 9). For jQueries .is used vanilla JavaScript .classList.contains, which did work...