Если вы используете jQuery, вы должны посмотреть на Superfish , поскольку это будет делать то, что вам нужно. Я использую модифицированную версию для некоторых других вещей, но вот что я получу, если вытащу небольшую выдержку и приму ее к вашему HTML.
<script type="text/javascript">
$(function() {
$("ul.dropdown li").hover(function() {
$(this).addClass("hover");
$('ul:first', this).show();
$(this).parents('li a').addClass('hover');
}, function() {
$(this).removeClass("hover");
$('ul:first', this).hide();
$(this).parents('li a').removeClass('hover');
});
$("ul.dropdown li ul li:has(ul)").find("a:first").append(" » ");
});
</script>
<style type="text/css">
/* CSS RESET ****************** v1.0 | 20080212 *****************************/
html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, font, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td { margin: 0; padding: 0; border: 0; outline: 0; font-size: 100%; vertical-align: baseline; background: transparent; }
body { line-height: 1; }
ol, ul { list-style: none; }
blockquote, q { quotes: none; }
blockquote:before, blockquote:after, q:before, q:after { content: ''; content: none; }
/* remember to define focus styles! */
:focus { outline: 0; }
/* remember to highlight inserts somehow! */
ins { text-decoration: none; }
del { text-decoration: line-through; }
/* tables still need 'cellspacing="0"' in the markup */
table { border-collapse: collapse; border-spacing: 0; }
.dropdown, .dropdown * { margin: 0; padding: 0; list-style: none; }
.dropdown { line-height: 1.0; }
.dropdown ul { position: absolute; width: 10em; /* left offset of submenus need to match (see below) */ }
.dropdown ul li { width: 100%; }
.dropdown li:hover { visibility: inherit; /* fixes IE7 'sticky bug' */ }
.dropdown li { float: left; position: relative; left: -1px; top: -1px; margin-left: 2px; margin-right: 2px; }
.dropdown a { display: block; position: relative; }
.dropdown span.dropdown-nolink { display: block; position: relative; }
.dropdown li:hover ul, .dropdown li.sfHover ul { left: 0; top: 2.5em; /* match top ul list item height */ z-index: 9999; }
ul.dropdown li:hover li ul, ul.dropdown li.sfHover li ul { top: -999em; }
ul.dropdown li li:hover ul, ul.dropdown li li.sfHover ul { left: 0em; /* match ul width */ top: 0; }
ul.dropdown li li:hover li ul, ul.dropdown li li.sfHover li ul { top: -999em; }
ul.dropdown li li li:hover ul, ul.dropdown li li li.sfHover ul { left: 0em; /* match ul width */ top: 0; }
.dropdown { float: left; margin-bottom: 0em; }
.dropdown a { padding: .70em 1em; text-decoration: none; }
.dropdown a, .dropdown a:visited { /* visited pseudo selector so IE6 applies text colour*/ color: #FFF; }
.dropdown span.dropdown-nolink { padding: .70em 1em; text-decoration: none; }
.dropdown span.dropdown-nolink, .dropdown span.dropdown-nolink:visited { /* visited pseudo selector so IE6 applies text colour*/ color: #FFF; }
.dropdown li { background: #4e8997; text-align: left; }
.dropdown li li { background: #4e8997; ;margin:0;top:-1px;left:-1px;}
.dropdown li li li { background: rgb(188,0,47); margin: 0; top: -1px; left: 0; }
.dropdown li:hover, .dropdown li.sfHover, .dropdown a:focus, .dropdown a:hover, .dropdown a:active { background: #c29c5d; outline: 0; z-index: 9999; }
.sub-menu { display: none; }
</style>
Я опубликовал JS, поскольку я также изменил его, чтобы использовать jQuery's show () / hide ().