@Art22

Как фиксировать выпадающее меню, чтобы не закрывался при открытии страницы?

Как фиксировать выпадающее меню, чтобы не закрывался при открытии страницы? вот ссылка на сайт super-gun.ru

Пример:
Нажимаем на
Пневматические пистолеты открывается выпадающее меню

нажимаем на Пистолеты GAMO открывается каталог выделяется Пистолеты GAMO и меню не закрывается.

Код для работы меню
function initMenu() {
  jQuery(".vmenu li.parent > a").click(function(eventObject){return false});
  jQuery('.vmenu ul').hide();
  jQuery('.vmenu li.active ul').show();
  jQuery('.vmenu li a').click(
    function() {
        jQuery(this).next().slideToggle('normal');	
      }
    );
  }
jQuery(document).ready(function() {initMenu();});


код для закрытии

function allClose(){
	var list = document.getElementById("menu").getElementsByTagName("ul");
	for(var i=0;i<list.length;i++){
		list[i].style.display = "none";
	}
}
function openMenu(node){
	var subMenu = node.parentNode.getElementsByTagName("ul")[0];
	subMenu.style.display == "none" ? subMenu.style.display = "block" : subMenu.style.display = "none";
}

onload="allClose()"> вставляется чтобы меню закрылся.

на ссылку устанавливается код onclick="openMenu(this);return false"
  • Вопрос задан
  • 1330 просмотров
Пригласить эксперта
Ответы на вопрос 3
@semki096
Как вариант - разместить на каждой из страниц скрипт добавляющий пункту свойство display: block.
Ответ написан
@enkos
Попробуй свой код заменить на этот. Должно работать. Тут сохраняется одно открытое меню и не выделяется активный пункт меню.
var menu = jQuery('#menu');

menu.find('ul').each(function(index, value) {
  value.id = 'opened_section_' + index;
});


function initMenu() {
  var openedMenuElem = JSON.parse(localStorage.getItem('superGunSettings')).openedMenuId;
  jQuery(".vmenu li.parent > a").click(function(eventObject){return false});
  jQuery('.vmenu ul').hide();
  jQuery('.vmenu li.active ul').show();
  jQuery('.vmenu li a').click(
    function() {
        jQuery(this).next().slideToggle('normal');	
      }
    );
  jQuery('#' + openedMenuElem).show();
  
  }
jQuery(document).ready(function() {initMenu();});


function allClose(){
  var list = document.getElementById("menu").getElementsByTagName("ul");
  for(var i=0;i<list.length;i++){
    list[i].style.display = "none";
  }
}
function openMenu(node){
  var subMenu = node.parentNode.getElementsByTagName("ul")[0];
  localStorage.setItem('superGunSettings', JSON.stringify({openedMenuId: subMenu.id}));
  subMenu.style.display == "none" ? subMenu.style.display = "block" : subMenu.style.display = "none";
}
Ответ написан
@Art22 Автор вопроса
<ul id="menu">
<li><a href="111" onclick="openMenu(this);return false"><img src="/images/menu/1.jpg"/>111</a>
<ul>
<li><a href="1">1</a></li>
<li><a href="2">2</a></li>
</ul>
</ul>
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы