正如您在我的代码中看到的,我有五个父链接,每个链接有12个子链接。我想在父链接旁边显示我的子链接的方式,当它被选中时,其他父链接的其他子链接应该同时被隐藏。 the telegraph网站上的导航正是我想要的。
这是导航示例代码。
<div class="menu_container">
<nav class="menu">
<ul>
<li><a href="#Menu 1">Menu 1</a>
<ul>
<li><a href="#SubMenu 1.1">SubMenu 1.1</a></li>
<li><a href="#SubMenu 1.2">SubMenu 1.2</a></li>
<li><a href="#SubMenu 1.3">SubMenu 1.3</a></li>
<li><a href="#SubMenu 1.4">SubMenu 1.4</a></li>
<li><a href="#SubMenu 1.5">SubMenu 1.5</a></li>
<li><a href="#SubMenu 1.6">SubMenu 1.6</a></li>
<li><a href="#SubMenu 1.7">SubMenu 1.7</a></li>
<li><a href="#SubMenu 1.8">SubMenu 1.8</a></li>
<li><a href="#SubMenu 1.9">SubMenu 1.9</a></li>
<li><a href="#SubMenu 1.10">SubMenu 1.10</a></li>
<li><a href="#SubMenu 1.11">SubMenu 1.11</a></li>
<li><a href="#SubMenu 1.12">SubMenu 1.12</a></li>
</ul>
</li>
<li><a href="#Menu 2">Menu 2</a>
<ul>
<li><a href="#SubMenu 2.1">SubMenu 2.1</a></li>
<li><a href="#SubMenu 2.2">SubMenu 2.2</a></li>
<li><a href="#SubMenu 2.3">SubMenu 2.3</a></li>
<li><a href="#SubMenu 2.4">SubMenu 2.4</a></li>
<li><a href="#SubMenu 2.5">SubMenu 2.5</a></li>
<li><a href="#SubMenu 2.6">SubMenu 2.6</a></li>
<li><a href="#SubMenu 2.7">SubMenu 2.7</a></li>
<li><a href="#SubMenu 2.8">SubMenu 2.8</a></li>
<li><a href="#SubMenu 2.9">SubMenu 2.9</a></li>
<li><a href="#SubMenu 2.10">SubMenu 2.10</a></li>
<li><a href="#SubMenu 2.11">SubMenu 2.11</a></li>
<li><a href="#SubMenu 2.12">SubMenu 2.12</a></li>
</ul>
</li>
<li><a href="#Menu 3">Menu 3</a>
<ul>
<li><a href="#SubMenu 3.1">SubMenu 3.1</a></li>
<li><a href="#SubMenu 3.2">SubMenu 3.2</a></li>
<li><a href="#SubMenu 3.3">SubMenu 3.3</a></li>
<li><a href="#SubMenu 3.4">SubMenu 3.4</a></li>
<li><a href="#SubMenu 3.5">SubMenu .5</a></li>
<li><a href="#SubMenu 3.6">SubMenu 35.6</a></li>
<li><a href="#SubMenu 3.7">SubMenu 3.7</a></li>
<li><a href="#SubMenu 3.8">SubMenu 3.8</a></li>
<li><a href="#SubMenu 3.9">SubMenu 3.9</a></li>
<li><a href="#SubMenu 3.10">SubMenu 3.10</a></li>
<li><a href="#SubMenu 3.11">SubMenu 3.11</a></li>
<li><a href="#SubMenu 3.12">SubMenu 3.12</a></li>
</ul>
</li>
<li><a href="#Menu 4">Menu 4</a>
<ul>
<li><a href="#SubMenu 4.1">SubMenu 4.1</a></li>
<li><a href="#SubMenu 4.2">SubMenu 4.2</a></li>
<li><a href="#SubMenu 4.3">SubMenu 4.3</a></li>
<li><a href="#SubMenu 4.4">SubMenu 4.4</a></li>
<li><a href="#SubMenu 4.5">SubMenu 4.5</a></li>
<li><a href="#SubMenu 4.6">SubMenu 4.6</a></li>
<li><a href="#SubMenu 4.7">SubMenu 4.7</a></li>
<li><a href="#SubMenu 4.8">SubMenu 4.8</a></li>
<li><a href="#SubMenu 4.9">SubMenu 4.9</a></li>
<li><a href="#SubMenu 4.10">SubMenu 4.10</a></li>
<li><a href="#SubMenu 4.11">SubMenu 4.11</a></li>
<li><a href="#SubMenu 4.12">SubMenu 4.12</a></li>
</ul>
</li>
<li><a href="#Menu 5">Menu 5</a>
<ul>
<li><a href="#SubMenu 5.1">SubMenu 5.1</a></li>
<li><a href="#SubMenu 5.2">SubMenu 5.2</a></li>
<li><a href="#SubMenu 5.3">SubMenu 5.3</a></li>
<li><a href="#SubMenu 5.4">SubMenu 5.4</a></li>
<li><a href="#SubMenu 5.5">SubMenu 5.5</a></li>
<li><a href="#SubMenu 5.6">SubMenu 5.6</a></li>
<li><a href="#SubMenu 5.7">SubMenu 5.7</a></li>
<li><a href="#SubMenu 5.8">SubMenu 5.8</a></li>
<li><a href="#SubMenu 5.9">SubMenu 5.9</a></li>
<li><a href="#SubMenu 5.10">SubMenu 5.10</a></li>
<li><a href="#SubMenu 5.11">SubMenu 5.11</a></li>
<li><a href="#SubMenu 5.12">SubMenu 5.12</a></li>
</ul>
</li>
</ul>
</nav>
</div>
我已经在使用JQuery,所以任何使用JQuery的解决方案也是最受欢迎的,当然,任何帮助都会非常受欢迎。
答案 0 :(得分:1)
最好使用show()
和hide()
进行一些DOM查询:
var currentParent = null;
$('.menu>ul>li>ul').hide();
$('.menu>ul>li').on('click', selectParent);
function selectParent(event) {
var elem = $(this);
if (currentParent && !elem.is(currentParent)) {
currentParent.children('ul').hide();
}
elem.children('ul').show();
currentParent = elem;
}
请参阅this fiddle进行试验。它还显示了如何在不修改标记的情况下使用float
和display: inline
重现电报导航栏的外观。
但是我强烈建议在<nav>
下添加第二个#menu_container
元素,该元素将保留子菜单。然后,您可以使用选择处理程序中的li
和ul
属性将父href
元素链接到id
个子列表。
<nav class="menu">
<ul>
<li><a href="#menu_1">Menu 1</a>
<li><a href="#menu_2">Menu 2</a>
...
</ul>
</nav>
<nav class="submenu">
<ul id="#menu_1">
<li><a href="#SubMenu 1.1">SubMenu 1.1</a></li>
<li><a href="#SubMenu 1.2">SubMenu 1.2</a></li>
<li><a href="#SubMenu 1.3">SubMenu 1.3</a></li>
...
</ul>
...
</nav>
相应的JS:
var currentParent = null;
var currentSubMenu = null;
// Hide all sublists
$('.submenu>ul').hide();
$('.menu>ul>li').on('click', selectParent);
function selectParent(event) {
var elem = $(this);
// If there is a previous parent, hide its child list
if (currentParent && !elem.is(currentParent)) {
currentSubMenu.hide();
}
var childID = elem.children('a').attr('href');
var childMenu = $(childID);
// Show the clicked element's child list
childMenu.show();
currentParent = elem;
currentSubMenu = childMenu;
}
此布局展示了here,使您可以更好地控制样式并实现精确定位。事实上,这正是在电报的HTML中完成的方式(仅使用div
而不是nav
)。
答案 1 :(得分:0)
你的意思是这个例子 - 请注意 MENU3 中示例中ul的类和位置:
$(".menu_item").hover(function(){
$(this).children('ul').show();
},
function(){
$(this).children('ul').hide();
});