Кнопка мобильного меню и отображение главного меню с jquery и css

У меня есть кнопка мобильного меню шириной менее 768 пикселей, и при нажатии она отображает меню, а при повторном нажатии - скрывает меню. Однако, как только jquery скрывает меню, как я могу показать его снова, если ширина браузера (например, на рабочем столе) превышает 768 пикселей. Должен ли я использовать jQuery для проверки ширины экрана и показывать более 768 пикселей или css сделает это?

$(document).ready(function(){
    var h = $("#hamburger");
    h.addClass('fa fa-toggle-down');
    h.on('click', function(){
      if (h.hasClass('fa-toggle-down')) {
        h
        .removeClass('fa-toggle-down')
        .addClass('fa-toggle-up');
        $("#main-menu .module-menu").show();
      } else {
        h
        .removeClass('fa-toggle-up')
        .addClass('fa-toggle-down');
        $("#main-menu .module-menu").hide();
      }
    });
});

CSS:

#hamburger {
  font-size: 20px;
  border: 1px solid #eee;
  background: #f5f5f5;
  color: black;
  padding: 3px 3px;
  border-radius: 3px;
  width: 36px;
  height: 36px;
  text-align: center;
  line-height: 30px;
  margin: 14px 3px 3px 3px;
  float:left;
  display:none;
}   
@media (max-width:768px){
  #hamburger {display:block}
  #main-menu .module-menu {display:none}
}   

HTML:

<div id="main-menu">
    <div class="container">
      <div class="row">
      <div class="col-md-9"><module type="menu" /></div>
      <div class="col-md-3" id="header-search"><div id="hamburger"></div><module type="search" template="autocomplete" /></div>
      </div>
    </div>
</div>  

1 ответ

Вы можете использовать переключение классов вместо show() а также hide() методы. Так что переключаться между этим классом и нет. И тогда вы можете выбрать этот класс, который будет скрыт для определенных разрешений. Таким образом, вы можете избежать проверки ширины экрана с помощью jQuery, и вы можете положиться на CSS media запросы. Вот пример: https://jsfiddle.net/43oays2c/

Другие вопросы по тегам