我有一个HTML菜单,它看起来像这样:
<nav>
<ul>
<li><a href="#">Home</a></li>
<li><a href="#">About</a>
<ul>
<li><a href="#">Team</a></li>
<li><a href="#">Philosophy</a></li>
<li><a href="#">History</a></li>
</ul>
</li>
<li><a href="#">Projects</a></li>
<li><a href="#">Services</a>
<ul>
<li><a href="#">Our Service</li>
<li><a href="#">Special Offers</a></li>
</ul>
</li>
<li><a href="#">Contact</a></li>
</ul>
</nav>
除了一件事之外,所有的东西都通过CSS成形:当其父列表项的链接指向与当前页面地址相同的地址时,使子菜单显示。
我知道这是可能的。但我真的是JavaScript、jQuery或PHP中最棒的一个(我认为后两者的意思是一样的,对吧?)。
我试着复制和粘贴像"OnClick=…"这样的代码片段,还有一个像",或者我发现的包含"GetElenentbyTagName"的代码片段(这几乎奏效了…),但除此之外,我甚至不知道该把它们放在哪里。它们只是工作不正常或根本不正常。我有一个完整的代码片段,但当我把它粘贴进去并替换一些标签名称时,所有的代码都被标记为红色,我试着让它工作了一整天,我的头都烧着了。
我认为这是可能的,因为我看到的东西似乎描述了我想做的事情的一部分。例如
脚本片段应该是
选项A:告诉浏览器,如果用户所在的页面的href地址与菜单中的链接地址相同,则其子菜单(ul li ul)或包含其自身的菜单(ul)应为"visibrity:visible"。
选项B:脚本代码说:"如果用户点击一个菜单项(ul-li),那么它的子菜单(ul-li-ul),如果它有子菜单,或者如果正在点击的菜单项是子菜单之一,那么这个子菜单应该变成"可见性:可见"。如果被点击的项目没有子菜单,那么就不应该显示任何子菜单。
HTML代码不能直接具有(nav)和(/nav)之间的类或其他属性。
我不确定是否理解您的需求,
你需要当用户转到某个菜单页面时,它会得到url并在菜单上激活该链接,直到用户到达该页面,对吗?
如果是这样,
我认为应该这样做:
<script type='text/javascript'>
$(function(){
$item = $('ul li a').filter(function(){
return $(this).prop('href').indexOf(location.pathname) != -1;
});
$item.css('visibility','visible'); //or whatever ur using to active it.
});
</script>
您可以使用CSS:
li ul {
display: none;
}
li a:hover + ul {
display: block;
}
http://jsfiddle.net/7bxf6r33/
[编辑]
这项工作:
http://jsfiddle.net/7bxf6r33/7/