Открыть класс переключения меню не работает

#javascript #jquery #html #css #menu

#javascript #jquery #HTML #css #меню

Вопрос:

Я просто пытаюсь просто использовать toggleClass для запуска класса .open в закрытом меню. Вот изображение того, как это должно выглядеть до и после: BEFOREAFTER

Итак, я знаю, что это довольно просто, поскольку я заставлял это работать раньше, но я не могу понять, почему это не сработает сейчас.

Мой HTML выглядит следующим образом:

 <div id="nav">
     <h1>SAKURA GARAGE</h1>
     <a href="javascript:void(0)" id="button" class="menu_toggle_container">
     <span class="menu_toggle"></span>
     </a>
     <ul class="menu">
          <li><a href="#" title="products">Products</a></li>
          <li><a href="#" title="services">Services</a></li>
          <li><a href="#" title="gallery">Gallery</a></li>
          <li><a href="#" title="about">About</a></li>
     </ul>
</div>
  

Мой css:

 #nav{
background-color:black;
position:absolute;
z-index:115;
top:0;
padding:18px 0 18px 25px;
@include span-columns(12);
-webkit-transition: height 0.5s ease-in-out;
-moz-transition: height 0.5s ease-in-out;
transition: height 0.5s ease-in-out; 
    h1{
    @include span-columns(5);
    letter-spacing: .1em;
    }

    .menu{
    height:0em;
    max-height:0%;
    overflow:hidden;
    }

    .open{
    height:10em;
    max-height:100%;
    overflow:hidden;
    }
}
  

Jquery:

 $("#button").click(function(){
    $(".menu").toggleClass(".open");
});
  

И вот живая версия:Живой пример

У меня есть значок гамбургера, который при нажатии анимируется, чтобы измениться на x. Я нашел код в Интернете, и он работает нормально, но я не уверен, что это то, что мешает переключаемому классу. Когда я проверяю элемент, я вижу, что класс .open добавляется и удаляется, но ничего не меняется.

Надеюсь, это не слишком простое решение…Хотя спасибо за чтение!

Комментарии:

1. Попробуйте удалить . (точка) перед «открыть» в toggleClass . Должно выглядеть так $(".menu").toggleClass("open");

Ответ №1:

Попробуйте без . в toggleClass методе:

 $(".menu").toggleClass("open");
  

Кроме того, ваш CSS немного не в порядке. У вас есть дополнительное закрытие } после .open класса. Это опечатка в Stack Overflow? Закрытие } должно быть после объявления #nav свойств.

Что-то вроде этого:

 #nav{
  background-color:black;
  position:absolute;
  z-index:115;
  top:0;
  padding:18px 0 18px 25px;
  @include span-columns(12); /* not sure what this does? */
  -webkit-transition: height 0.5s ease-in-out;
  -moz-transition: height 0.5s ease-in-out;
  transition: height 0.5s ease-in-out;
}

h1{
  @include span-columns(5); /* not sure what this does? */
  letter-spacing: .1em;
}

.menu{
  height:0em;
  max-height:0%;
  overflow:hidden;
}

.open{
  height:10em;
  max-height:100%;
  overflow:hidden;
}
  

Комментарии:

1. О боже, спасибо! Я исправил это, но оно по-прежнему не принимает свойства .open при переключении…

2. @user2056708 добавил ответ. Что @include в вашем CSS. Это ДЕРЗОСТЬ ?

3. Да, это дерзость и изящество бурбона для столбцов! Таким образом, h1, .menu и .open вложены в #nav

4. Но какие свойства отсутствуют при переключении выпадающего списка?

5. @user2056708 Я так понимаю, что это предварительно скомпилированный CSS? где находится JavaScript? Это во внешнем файле? Я не вижу этого на вашем сайте…

Ответ №2:

Используйте это:

  $(".menu").toggleClass("open");
  

Вместо этого

   $(".menu").toggleClass(".open");
  

Вам не нужна точка в качестве префикса, поскольку метод уже предполагает, что его аргументом является класс.

Комментарии:

1. Спасибо!! Я исправил это, но оно по-прежнему не принимает свойства .open при переключении…

2. Щелкните правой кнопкой мыши в браузере> Проверить элемент > Затем перейдите в консоль и найдите там ошибку, связанную с javascript и jquery.