先週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