Горизонтальное подменю jquery остается открытым при нажатии на меню

Возможно, это связанный вопрос, но я не смог найти для него хорошего решения, поэтому вот мой вопрос. У меня есть горизонтальное меню с некоторыми подпунктами. В тот момент, когда я нажимаю на главное меню, отображается подменю, и оно остается открытым, даже если я щелкаю в любом месте страницы. Но вот сложная часть: когда я нажимаю на пункт меню (в подменю), я хочу, чтобы в подменю отображались элементы, на которых находится страница. Например, меню выглядит так: главная, страница1, страница2 и подменю (страницы1): страница1а, страница1b. Поэтому, когда я нажимаю на 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;
}

Я надеюсь, что вы, ребята, можете мне с этим помочь.

Спасибо


person udigital    schedule 15.11.2011    source источник
comment
кто-нибудь может мне с этим помочь?   -  person udigital    schedule 16.11.2011
comment
Я добавил код на jsfiddle.net: [jsfiddle.net/ud2011/QQQdH/4/]. Как вы можете видеть, onclick работает даже при нажатии на другой пункт меню, но это работает только тогда, когда href не установлен (только #). Пожалуйста, посмотрите и дайте мне знать.   -  person udigital    schedule 16.11.2011
comment
Никто не может мне помочь ??   -  person udigital    schedule 21.11.2011


Ответы (1)


Не уверен, что понял проблему.

Вот что я сделал в jsfiddle: http://jsfiddle.net/QQQdH/765/

Сначала я добавил текущий класс в меню «Дисциплины» (как если бы я находился на странице «Дисциплины»).

 <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".

person progysm    schedule 19.03.2014