Search code examples
jquerymenuslidedownslideupnavigationbar

jquery: slidedown and slideup on horizontal navigation bar menu


I'm trying to create a simple show submenu with simple slideup or slidedown animation on hover using jquery.

It works fine when i have #menu1 and #menu2. But there is repetition in code.

How can I get sub1 and sub2 to slide up and down without repeating code?

I also want to display sub1 and sub2 in orange and the dropdown list in blue. However, now all are getting displayed in blue.

thank you.

My code:

<style type="text/css">
ul{
list-style-type:none;
margin:0;
padding:0;
background-color:#FF9900;
}
li {float:left;
display:block;
width:120px;
text-align:center;
padding:4px;
color:#FFFFFF;
background-color:#33CCFF;}
</style>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
    $("#menu1").hover(
        function(){//onmouseover
            $("#menu1 ul").slideDown();
        },
        function(){//onmouseout
            $("#menu1 ul").slideUp();
        });
     $("#menu2").hover(
        function(){//onmouseover
            $("#menu2 ul").slideDown();
        },
        function(){//onmouseout
            $("#menu2 ul").slideUp();
        });
});
</script>
</head>

<body>
<ul id="menu">
    <li id="menu1">Sub 1
        <ul>
            <li>test 1</li>
            <li>test 2</li>
            <li>test 3</li>
            <li>test 4</li>
        </ul>
    </li>
    <li id="menu2">Sub 2
        <ul>
            <li>test 1</li>
            <li>test 2</li>
            <li>test 3</li>
            <li>test 4</li>
        </ul>
    </li>
</ul>       
</body>
</html>

Solution

  • $("#menu1,#menu2").hover(
            function(){//onmouseover
                $(this).children("ul").slideDown();
            },
            function(){//onmouseout
                $(this).children("ul").slideUp();
        });