Javascript для изменения значений css для мобильного дисплея

#javascript #css #mobile #nav

#javascript #css #Мобильный #навигация

Вопрос:

Я пытаюсь заставить кнопку мобильной навигации изменять отображение меню с display: none; на display: block; при нажатии, а затем с display: block; на display: none; при повторном нажатии. Это работает, переключаясь с display: none; на display: block; но не с display: block; на display: none;

Я все еще относительно новичок в работе с javascript, я пытался поискать свой ответ (я чувствую, что он может быть где-то там), но если я не реализовывал какой-то другой код, который я нашел неправильным, я не смог заставить его функционировать. ниже приведена моя первоначальная попытка его кодирования. Спасибо за помощь

 var hidden = true;

if (hidden == true) {
   $('a.hamburger').click(function() {
    hidden = false;
    document.getElementById('navigation').style.display = "block";
    document.getElementById('header-menu').style.height = "370px";
    });
} else if (hidden != true) {
$('a.hamburger').click(function() {
    hidden = true;
    document.getElementById('navigation').style.display = "none";
    document.getElementById('header-menu').style.height = "78px";
});
};
  

Ответ №1:

Или вы могли бы использовать jQuery .toggle() . Кроме того, я не уверен, является ли по какой-то причине сознательным выбором смешивать ваш jQuery с vanilla JS, но вот чисто jQuery-решение:

 $(document).ready(function(){
    $('a.hamburger').click(function() {
        $('#navigation').toggle();
        if ($('#navigation').is(':visible')) {
            $('#header-menu').css('height', '370');
        } else {
           $('#header-menu').css('height', '');
        }  
    });
});
  

Вот рабочий пример.

Ответ №2:

Правильный способ скрыть и отобразить элемент в jquery — использовать .hide() и .show()

Пример:

 $('#id').hide(); 

$('#id').show();
  

Или альтернативно

 $("#id").css("display", "none");

$("#id").css("display", "block");
  

Ответ №3:

Спасибо, ребята, за ответы, я ждал оповещения по электронной почте о том, что у меня есть ответы, но я так и не получил ни одного, поэтому я попросил друга о помощи этим утром и выяснил, что проблема в том, что у меня было 2 функции щелчка, когда должна быть только одна, вот что получилось:

 var $isHidden = true;

$('a.hamburger').click(function() { 


     if ($isHidden == true){

    document.getElementById('navigation').style.display = "block";
    document.getElementById('header-menu').style.height = "370px";
    $isHidden = false;

} else {


    document.getElementById('navigation').style.display = "none";
    document.getElementById('header-menu').style.height = "78px";
    $isHidden = true;
 };
 });