也许这是一个相关的问题,但我找不到一个好的解决方案,所以这是我的问题。 我有一个包含一些子项的水平菜单。当我点击主菜单时,子菜单正在显示,即使我点击页面上的任何位置,它仍然保持打开状态。 但是这里是棘手的部分,当我点击菜单项(在子菜单中)时,我希望子菜单显示页面所在的项目。 例如,菜单如下所示:home,page1,page2和submenu(of page1):page1a,page1b。所以当我点击page1时,会打开带有page1a和page1b的子菜单,但是当我点击page1a时,page1a的页面会打开,但子菜单仍然关闭,而我希望它显示page1的子菜单。 这是我的html菜单:
<ul id="topnav">
<li>
<a href="index.html">Home</a>
</li>
<li>
<a href="#">Over Meves</a>
<!--Submenu begint hier-->
<span>
<a href="#">Historie</a> |
<a href="#">Onze mensen</a> |
<a href="#">Werkzijze</a>
</span>
</li>
<li>
<a href="#">Disciplines</a>
<!--Submenu begint hier-->
<span>
<a href="vervolg.html">Klimaatbeheersing</a> |
<a href="#">Elektrotechniek</a> |
<a href="#">Sanitaire techniek</a> |
<a href="#">Energiebesparingstechniek</a> |
<a href="#">Bouwfysica en geluid</a> |
<a href="#">Diensten energiebesparing</a>
</span>
</li>
<li>
<a href="#">Expertise</a>
<!--Submenu begint hier-->
<span>
<a href="#">Woningbouw & Utiliteit</a> |
<a href="#">Zorg & Welzijn</a> |
<a href="#">Milieu & Energie</a> |
<a href="#">Beheer & Onderhoud</a> |
<a href="#">EPA & EPC</a> |
<a href="#">Legionella beheersing</a>
</span>
</li>
<li>
<a href="#">Contact</a>
<!--Submenu begint hier-->
<span>
<a href="#">Adres & route</a> |
<a href="#">Werken bij</a>
</span>
</li>
</ul>
打开子菜单的jquery:
<script type="text/javascript">
var ddmenuitem = 0;
function jsddm_open()
{ jsddm_close();
ddmenuitem = $(this).find('span').css('display', 'block');
}
function jsddm_close()
{
if(ddmenuitem) ddmenuitem.css('display', 'none');
}
$(document).ready(function()
{
$('#topnav > li').bind('click', jsddm_open)
$('#topnav > li > a').click(function(){
if ($(this).attr('class') != 'active'){
$('#topnav li a').removeClass('active');
$(this).addClass('active');
}
});
$('.project-tekst').trimTxt();
});
</script>
菜单的css:
ul#topnav
{
float: left;
width: 900px;
background: #00537F;
padding: 0;
margin: 0;
margin-top: 3px;
position: relative;
list-style: none;
font-size: 12px;
}
ul#topnav li
{
float: left;
margin: 0;
padding: 0;
}
ul#topnav li a
{
padding: 5px 15px;
color: #00537F;
text-decoration: none;
display: block;
font-weight: bold;
}
ul#topnav li a:link
{
color: #FFF;
text-decoration: none;
}
ul#topnav li a:visited
{
color: #FFF;
text-decoration: none;
}
ul#topnav li a:hover
{
color: #FFF;
text-decoration: underline;
}
ul#topnav li a.active
{
text-decoration: underline;
color: #FFF;
}
ul#topnav li span
{
float: left;
padding: 4px 0;
position: absolute;
left: 0;
top: 24px;
display: none;
background: #e0e0e0;
color: #00537F;
}
ul#topnav li span a
{
display: inline;
color: #00537F;
padding: 4px 8px;
}
ul#topnav li span a:link
{
color: #00537F;
}
ul#topnav li span a:visited
{
color: #00537F;
}
ul#topnav li span a:hover
{
text-decoration: underline;
color: #00537F;
}
ul#topnav li span a.active
{
text-decoration: underline;
color: #00537F;
}
我希望你们可以帮助我。
由于
答案 0 :(得分:0)
我不确定我是否理解这个问题。
这是我在jsfiddle中所做的:http://jsfiddle.net/QQQdH/765/
首先,我在Disciplines菜单上添加了当前的课程(就像我在Discipline页面上一样)。
<a href="http://google.com/" class="current">Disciplines</a>
其次,在点击监听器内部,当有电流时,我停止传播(转到href)。
$('#topnav > ul > li > a').click(function(ev){
if ($(this).hasClass('current')) {
ev.preventDefault();
}
所以使用这个菜单,即使有一个href =“something”,我也可以看到子菜单。