我剛剛開始在jQuery上週編寫代碼,並且需要一些幫助來弄清楚如何使菜單正常工作。我有3個選項卡,每個都有自己的菜單。當顯示頁面時,會自動顯示菜單和子菜單。一旦顯示,用戶可以將鼠標懸停在標籤上查看其他子菜單,當它們停止懸停時,顯示最初的子菜單。如何讓我的子菜單在jQuery懸停菜單中打開?
我的問題是,雖然我可以向他們展示其他選項卡的子菜單,但我無法讓子菜單保持打開狀態,以供用戶單擊子菜單項。其他教程只有在子菜單嵌套在父元素中時才顯示如何執行此操作,但是我的菜單結構代碼沒有嵌套子菜單(這就是我加入項目時的代碼)。如果用戶在相應的選項卡上懸停,有沒有辦法讓子菜單保持打開狀態?
這裏是我的菜單HTML:
<div id="navigation">
<div id="main-nav">
<div id="kids"><a href="../images/nav1.png"></a></div>
<div id="community"><a href="../images/nav2.png"></a></div>
<div id="about"><a href="../images/nav3.png"></a></div>
</div>
</div>
<div id="sub-nav">
<ul class="menu-1 requiresJS">
<li><a href="#">Item1</a></li>
<li><a href="#">Item2</a></li>
<li><a href="#">Item3</a></li>
<li><a href="#">Item4</a></li>
<li><a href="#">Item5</a></li>
<li><a href="#">Item6</a></li>
</ul>
<ul class="menu-2 requiresJS">
<li><a href="#">Item1</a></li>
<li><a href="#">Item2</a></li>
<li><a href="#">Item3</a></li>
<li><a href="#">Item4</a></li>
<li><a href="#">Item5</a></li>
<li><a href="#">Item6</a></li>
</ul>
<ul class="menu-3 requiresJS">
<li><a href="#">Item1</a></li>
<li><a href="#">Item2</a></li>
<li><a href="#">Item3</a></li>
<li><a href="#">Item4</a></li>
<li><a href="#">Item5</a></li>
<li><a href="#">Item6</a></li>
</ul>
這裏是我的jQuery迄今:
// For JS users, display sub menus by default
$(".requiresJS").css("display","block");
var startMenu
//hide all sub menus
$("#sub-nav ul").hide();
// check URL for about, community or kids and set startMenu with correct term
if(window.location.href.indexOf("about") != -1){startMenu = "about"}
else if(window.location.href.indexOf("community") != -1){startMenu = "community"}
else{startMenu = "kids"}
// highlight correct category tab
$("div#main-nav #" + startMenu).addClass("selected");
// show correct starting menu
$("#sub-nav ul.menu-" + startMenu).show('slide', {direction: 'right'}, 600).effect("bounce", { times:1,direction:"right",distance:13 }, 300);
// show correct menu on mouseover of div
$("div#main-nav div").mouseover(function() {
$("#sub-nav ul").stop(true, true)
$("#sub-nav ul").hide();
var currentId = $(this).attr('id');
$("#sub-nav ul.menu-" + currentId).show();
});
$("div#main-nav div").mouseover(function() {
$("#sub-nav ul").stop(true, true)
$("#sub-nav ul").hide();
var currentId = $(this).attr('id');
$("#sub-nav ul.menu-" + currentId).show();
});
有趣!我將不得不嘗試這個。我最終重新格式化了我的整個菜單並嵌套了所有教程所要做的事情。它有效,但知道如何以另一種方式做到這一點很好。謝謝! – alipica