2011-11-22 11 views
5

Podría alguien ayudarme con el código.jQuery mostrar el submenú si se hizo clic en el elemento principal

Quiero mostrar el submenú solo cuando se hace clic en el submenú principal.

HTML

<ul> 
<li><a href="#">Item</a></li> 
<li><a href="#">Item</a> 
    <ul class="sub-menu"> 
     <li><a href="#">Submenu</a></li> 
     <li><a href="#">Submenu</a></li> 
    </ul> 
</li> 
<li><a href="#">Item</a></li> 
<li><a href="#">Item</a> 
    <ul class="sub-menu"> 
     <li><a href="#">Submenu</a></li> 
     <li><a href="#">Submenu</a></li> 
    </ul> 
</li> 
<li><a href="#">Item</a></li> 
</ul> 

lo tanto, si se hace clic en el submenú de los padres va a mostrar.

Aquí es enlace de violín - http://jsfiddle.net/KhNCV/1/

Respuesta

1

Aquí es your example working. No está claro por qué necesita las etiquetas a, ya que podría usar cursor: puntero en el CSS para hacer que el li aparezca en blanco. ¿Asumiré que quieres hacer algunos spiffy sobre IE en ellos que solo es CSS? De lo contrario, podría simplificar eliminándolos.

En lugar de hacer hide() en .submenu, debe usar CSS (analizado con DOM en lugar de onReady/load).

.sub-menu { display: none; } 

Y entonces aquí es que el código para activar los menús:

$('ul li a').click(function() { 
    $(this).parent().find('ul.sub-menu').toggle(); 
    return false; 
}); 
+0

, pero cómo ocultar el submenú anterior porque ahora ambos están mostrando –

1
$('li a').click(
function() { 
    $(this).next().slideToggle(); 
}) 
0

probar este

$(function(){ 

    //Hide all the sub menus 
    $('.sub-menu').hide(); 

    $("li:has(ul)").click(function(){ 
     //Find the child ul and slideToggle 
     $(this).children("ul").slideToggle(); 
    }); 
}); 
Cuestiones relacionadas