Почему этот простой переключатель jQuery не работает?

Мне интересно, почему это toggle не работает. addClass метод и, следовательно, скрывая nav работает хорошо... Есть ли простая опечатка, которую я пропускаю, или я неправильно понимаю концепцию? Спасибо за помощь.

$(document).ready(function() {
  $("body").addClass("js");

  var $menu = $("#menu"),
    $menulink = $(".menu_link");

  $menulink.click(function() {
    $menulink.toggleClass("active");
    $menu.toggleClass("active");
    return false;
  });
});
.menu_link {
  position: absolute;
  top: 1.5rem;
  right: 1.5rem;
  color: black;
  background-color: #fff;
  padding: 1rem;
  border-radius: 50%;
}
.menu_link .active {
  background-color: red;
}
.js nav {
  overflow: hidden;
  max-height: 0;
}
nav .active {
  max-height: 15rem;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="#menu" class="menu_link">Inhalt</a>
<nav id="menu">
  <ul>
    <li><a href="#">Punkt 1</a></li>
    <li><a href="#">Punkt 2</a></li>
    <li><a href="#">Punkt 3</a></li>
    <li><a href="#">Punkt 4</a></li>
  </ul>
</nav>

2 ответа

Решение

Ошибка в вашем CSS; .active класс размещается непосредственно на nav а также .menu_link элементы, поэтому вам нужно удалить пробелы между их селекторами:

.menu_link.active {
    background-color: red;
}

nav.active {
    max-height: 15rem;
}

Рабочий пример

Попробуйте удалить пробел перед.active. так становится

.menu_link.active {}

А также

nav.active {}
Другие вопросы по тегам