如果我理解正確的話,你想下發生:
噸
- 第一頁的負荷,所有下拉菜單都崩潰了。
- 用戶懸停在菜單項上,出現下拉式子菜單
- 用戶將鼠標懸停在子菜單項上時,它將突出顯示。
- 用戶單擊子菜單項 - 頁面重新加載。在激活的項目高亮顯示的情況下,新頁面下拉菜單仍然可見。
- 用戶做步驟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();
}
});
我還沒有實際測試過了,所以我敢肯定,你必須做得比這更得到一個完美的工作解決方案,但我希望你能看到諸如此類的事情,我想在這裏做。