Если я правильно вас понимаю, вы бы хотели, чтобы произошло следующее:
- Первая загрузка страницы, все раскрывающиеся меню свернуты.
- Пользователь наводит курсор мыши на элемент меню, выпадающийпоявляется подменю
- Пользователь наводит курсор на элемент подменю, он подсвечивается.
- Пользователь щелкает элемент подменю - страница перезагружается.На новой странице раскрывающееся подменю все еще отображается с выделенным активным элементом.
- Пользователь снова выполняет шаги 1-4 для другого элемента подменю, когда при перезагрузке страницы предыдущее подменю сворачивается, но новоеподменю будет видно.
Основной вопрос здесь заключается в том, будет ли страница перезагружаться всякий раз, когда пользователь нажимает на элемент, поскольку решение будет отличаться в зависимости от этого.
Предполагая, что страница будет перезагружаться, вам нужно будет сделать так, чтобы при перезагрузке страницы разметка выглядела следующим образом:
<nav id="topNav">
<ul>
<li><a href="#" title="Nav Link 1">Nav Link 1</a></li>
<li class="currentParent"><a href="#" title="Nav Link 1">Nav Link 2</a>
<ul>
<li><a href="#" title="Sub Nav Link 1">Sub Nav Link 1</a></li>
<li class="current"><a href="#" title="Sub Nav Link 2">Sub Nav Link 2</a></li>
<li><a href="#" title="Sub Nav Link 3">Sub Nav Link 3</a></li>
<li><a href="#" title="Sub Nav Link 4">Sub Nav Link 4</a></li>
<li class="last"><a href="#" title="Sub Nav Link 5">Sub Nav Link 5</a></li>
</ul>
</li>
<li><a href="#" title="Nav Link 1">Nav Link 3</a></li>
<li><a href="#" title="Nav Link 1">Nav Link 4</a></li>
<li class="last"><a href="#" title="Nav Link 1">Nav Link 5</a></li>
</ul>
</nav>
И вам нужно изменить CSS:
nav ul ul a:hover { background-color:#555; }
до:
nav ul ul a:hover, nav ul ul li.current a:hover { background-color:#555; }
и:
.no-cssgradients nav li:hover, .no-js nav li:hover { ... }
до:
.no-cssgradients nav li:hover, .no-cssgradients nav li.currentParent, .no-js nav li:hover, .no-js nav li.currentParent { ... }
И добавьте следующую строку:
nav ul li.currentParent ul { display:block; }
А затем в JavaScript измените:
//show subnav on hover
$(this).mouseenter(function() {
$(this).find("ul").stop(true, true).slideDown();
});
//hide submenus on exit
$(this).mouseleave(function() {
$(this).find("ul").stop(true, true).slideUp();
});
на:
//show subnav on hover
$(this).mouseenter(function() {
if(!$(this).hasClass('currentParent')) {
$(this).find("ul").stop(true, true).slideDown();
}
});
//hide submenus on exit
$(this).mouseleave(function() {
if(!$(this).hasClass('currentParent')) {
$(this).find("ul").stop(true, true).slideUp();
}
});
Я на самом деле не проверял это, поэтому я уверен, что вам придетсясделайте больше, чем это, чтобы получить идеально работающее решение, но я надеюсь, что вы можете увидеть то, что я пытаюсь сделать здесь.