Alan
Alan

Reputation: 11

jquery menu works well on hover, but sub-menu disappears on click

I have a nice two row menu, where the second row appears on hover on the first row. The second row, however, disappears when I click on it; unless I mouse over the parent in the first row. I would like the parent and sibling to remain highlighted, until another item is clicked. I have searched through many questions, but cannot find what I am doing wrong.

My css:

#main-nav {
    margin: 0px 0px 0px 0px;
    text-align: left;
    height: 25px;
    background:url('images/buttonback.gif') repeat-x;
    padding-top:  0px;
    padding-left: 43px;
}

#main-nav li {
    display: inline;
    list-style: none;
}
#main-nav li a {
    width: 109px;
    height: 15px;
    margin-right: 5px;
    font-size: 12px;
    text-decoration: none;
    color: #f2f2f2;
    font-family: Arial, Helvetica, sans-serif;
    text-transform: uppercase;
    font-weight: bold;
    padding: 4px;
    outline: 0;
    position: relative;
    top: 5px;
}
#main-nav li a:hover, #main-nav li a.active {
    background: #00539f;
}

#menu2 {
width: 800px;
height: 25px;
padding-left: 0px;
background:url('images/brownback.gif') repeat-x;
}

.sub-links {
    display: none;
    position: absolute;
    width: 800px;
    top: 154px;
    text-align: left;
}

#main-nav li .sub-links li a:hover {
    background: #ca9e59;
}

The Jquery script:

<script type="text/javascript" src="jquery-1.6.2.min.js"></script>
<script type="text/javascript">
$(function(){
        $('#main-nav li a.main-link').hover(function(){
        $("#main-nav li a.main-link").removeClass("active");                                                            $(this).addClass("active"); 
        $(".sub-links").hide();                                 
        $(this).siblings(".sub-links").fadeIn();
    });     
$(function(){
    $(".sub-links a").click(function(){
        $(".sub-links").hide();
        $(this).fadeIn();
    });
    });
});
</script>

And the html:

 <ul id="main-nav">
        <li><a class="main-link" href="index.htm">Home</a>
        </li>
        <li><a class="main-link" href="about.htm">About Us</a>
          <ul class="sub-links">
            <li><a href="mission.htm" title="Mission-Vision-Values">Mission Vision Values</a> </li>
            <li><a href="board.htm" title="Board">Board</a> </li>
             <li><a href="stratplan.htm" title="StratPlan">Strategic Plan</a> </li>
            <li><a href="staff.htm" title="Staff">Staff</a> </li>
            <li><a href="customervalue.htm" title="CustomerValuePropostion">Customer Value Proposition</a> </li>

          </ul>
        </li>
   <li><a class="main-link" href="facilities.htm">Facilities</a>
        </li>      
        <li><a class="main-link" href="http://www.fhhr.ca/services.htm">Services</a>

        </li>
        <li><a class="main-link" href="http://www.fhhr.ca/careers.html">Careers</a>

        </li>
        <li><a class="main-link" >News & Info</a>
            <ul class="sub-links">
                <li><a href="annualreport.htm" title="AnnualReport">Annual Report</a></li> 
                <li><a href="regionnews.htm" title="RegionNews">Region News</a></li> 
                <li><a href="media.htm" title="MediaRelease">Media Releases</a></li> 
                <li><a href="newsletter.htm" title="Newsletter">Newsletter</a></li> 

            </ul>
        </li>
        <li><a class="main-link" href="contact.htm">Contact Us</a>

        </li>

      </ul> 
   <div id="menu2"></div>

Upvotes: 1

Views: 811

Answers (1)

Nicola Peluchetti
Nicola Peluchetti

Reputation: 76880

The second row disappears because you hide it on click: if you don't want to hide it just remove this part:

$(function(){
    $(".sub-links a").click(function(){
        $(".sub-links").hide();
        $(this).fadeIn();
    });
    });
});

Upvotes: 2

Related Questions