Prevent redirecting parent anchor if it has submenu
by hannes
HTML
<ul id="toggle">
<li> <a href="/">Home</a>
<li> <a href="/products">Products</a>
<ul class="dropdown-menu" role="menu">
<li><a href="/products/potatos">Potatos</a></li>
<li><a href="/products/carrots">Carrots</a></li>
</ul> </li>
<li><a href="/contact">Contact</a>
<ul class="dropdown-menu" role="menu">
<li><a href="/contact/people">People</a></li>
<li><a href="/contact/map">Map</a></li>
</ul>
</li>
</ul>
CSS
#toggle {
list-style-type: none;
margin: 0;
padding:0;
text-align:left;
line-height:2.5em;
font-size: 1.0em;
text-transform:uppercase;
font-style:normal;
}
#toggle li {
padding:0;
margin:0;
vertical-align:top;
float:left;
position:relative;
}
#toggle li a {
background-color:#222;
margin:0 1px 0 0;
padding:8px 17px;
color:#fff;
font-weight:300;
text-decoration:none;
}
#toggle li ul {
list-style-type: none;
left:0;
position:absolute;
display: none;
}
JavaScript
$('#toggle li:has(.dropdown-menu)').hover(function (event) {
if ($(event.target).parents('.dropdown-menu').length > 0) {
event.stopPropagation();
} else {
$(this).find('a:first').attr('href','#');
event.preventDefault();
}
$(this).find('ul').slideToggle();
});