Tengo navegación principal y navegación secundaria que por motivos de diseño están en DIV separados. Me gustaría mostrar el subnave apropiado cuando se sitúa un elemento de navegación principal, lo que puedo hacer, pero también quiero mantener el subnave abierto si el usuario mueve el mouse fuera del elemento de navegación principal y hacia el sub -nav área. La última parte es el lugar donde me estoy estancando.jQuery hover depende de dos elementos
Estoy pensando en salir, tengo que hacer algo con setTimeout() y una instrucción IF, pero no he podido hacer ningún progreso en esa área. ¿Es incluso un enfoque que vale la pena intentar?
HTML:
<div id="mnav">
<ul id="buttons">
<li class="one"><a href="#">Main 1</a></li>
<li class="two"><a href="#">Main 2</a></li>
<li class="three"><a href="#">Main 3</a></li>
<li class="four nav-dark"><a href="#">Main 4</a></li>
</ul>
</div> <!-- /mnav -->
<div id="snav">
<ul class="snav-one">
<li><a href="#">Sub 1.1</a></li>
<li><a href="#">Sub 1.2</a></li>
<li><a href="#">Sub 1.3</a></li>
<li><a href="#">Sub 1.4</a></li>
<li><a href="#">Sub 1.5</a></li>
<li><a href="#">Sub 1.6</a></li>
</ul>
<ul class="snav-two">
<li><a href="#">Sub 2.1</a></li>
<li><a href="#">Sub 2.2</a></li>
</ul>
</div> <!-- /snav -->
JS:
$(document).ready(function() {
$("#buttons li.one, #buttons li.two").hover(function(){
var subnav = 'ul.snav-' + $(this).attr('class');
$("#snav").slideDown('fast').addClass("open").find(subnav).show();
}, function(e){
var subnav = 'ul.snav-' + $(this).attr('class');
$("#snav").slideUp('fast').removeClass("open").find(subnav).hide();
});
});
¡Eso funcionó perfectamente! Muchas gracias por tomarse el tiempo para unir eso, realmente me estás ayudando Y enseñándome muchísimo. – creativetim
De nada. ¡Encantado de ayudar! –
No quiero estirarlo, pero ¿tiene alguna idea sobre la refactorización para permitir que un subnav se abra en una página de forma predeterminada? – creativetim