javascript - 我怎样才能让我的菜单展开所有的子元素?

标签 javascript jquery html css menu

我有一个列表菜单,其中包含一些 JavaScript 代码,可以折叠和展开 .onClick

虽然我只能让它显示 1 个元素,因为每次我尝试一个新的解决方案,比如 for 循环或 case 我都无法让它工作。

这是我当前的代码:

<ul id="navigation">
    <li class="main"><a>Diagonóstico</a></li>
    <li class="sub"><a href="javascript:void(0);" class="sub_di1"> › Grátis (na compra de qualquer serviço) </a></li>
    <li class="main"><a>Hardware</a></li>
    <li class="sub"><a href="javascript:void(0);" class="sub_ha1"> › Instalação/Configuração de Componentes</a></li>
    <li class="sub"><a href="javascript:void(0);" class="sub_ha2"> › Instalação/Configuração de Periféricos </a></li>
    <li class="sub"><a href="javascript:void(0);" class="sub_ha3"> › Limpeza interna/externa </a></li>
    <li class="sub"><a href="javascript:void(0);" class="sub_ha4"> › Cooling Pack </a></li>
    <li class="sub"><a href="javascript:void(0);" class="sub_ha5"> › Performance Pack </a></li>
    <li class="main"><a>Software</a></li>
    <li class="sub"><a href="javascript:void(0);" class="sub_so1"> › Actualização de Sistema Operativo </a></li>
    <li class="sub"><a href="javascript:void(0);" class="sub_so2"> › Instalação de Sistema Operativo </a></li>
    <li class="sub"><a href="javascript:void(0);" class="sub_so3"> › Instalação de Drivers e Aplicações </a></li>
    <li class="sub"><a href="javascript:void(0);" class="sub_so4"> › Configurações de internet e redes wireless </a></li>
    <li class="sub"><a href="javascript:void(0);" class="sub_so5"> › Legalize o seu PC </a></li>
    <li class="main"><a>Backup</a></li>
    <li class="sub"><a href="javascript:void(0);" class="sub_ba1"> › Backup de dados até 4GB </a></li>
    <li class="sub"><a href="javascript:void(0);" class="sub_ba2"> › Backup and Go </a></li>
    <li class="sub"><a href="javascript:void(0);" class="sub_ba3"> › Suportes Danificados </a></li>
    <li class="sub"><a href="javascript:void(0);" class="sub_ba4"> › Recuperação de dados sem intervenção física </a></li>
    <li class="main"><a>Segurança</a></li>
    <li class="sub"><a href="javascript:void(0);" class="sub_se1"> › Remoção de Vírus e Spyware </a></li>
    <li class="sub"><a href="javascript:void(0);" class="sub_se2"> › Instalação de anti-vírus </a></li>
    <li class="sub"><a href="javascript:void(0);" class="sub_se3"> › Configurações de Controlo Parental </a></li>
</ul>
$(function () {
    $("li.sub:not(:first)").hide();
    $("li.main a").click(function () {
        $("li.sub").slideUp("fast");
        $(this).parent("li.main").next("li.sub").slideDown("slow");
    });
});

这是 jsFiddle 为之。

我正在考虑一个 for 循环,它一直遍历每个子菜单类别,例如:

for(var i=1; i<5; i++) {
    $(this).parent("li.main").next("li.sub_ha" + i).slideDown("slow");
}

然后为每个主菜单执行此操作,为每个主菜单分配一个类 menu1,menu2,menu3

最佳答案

next 只选择被选元素的下一个兄弟元素,可以使用nextUntil 方法。

$(this).parent().nextUntil("li.main").slideDown("slow");

http://jsfiddle.net/ruf6z/

$(function() {
    var $subitems = $("li.sub");
    $subitems.not(':first').hide();

    $("li.main a").click(function() {
        var $targets = $(this).parent().nextUntil("li.main").slideDown("slow");
        $subitems.not($targets).slideUp("fast");
    });
});

http://jsfiddle.net/ruf6z/1/

关于javascript - 我怎样才能让我的菜单展开所有的子元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16071471/

相关文章:

javascript - 来自未知来源的页面高度

javascript - 如何在 struts 1.3.10 中显示警告框?

jquery - .tooltip() 不是函数

javascript - 如何使用 HTML5 的全屏 API 检查元素是否全屏

javascript - 我似乎无法让提交按钮显示总数

javascript - Facebook同一窗口身份验证

javascript - 如何在 Javascript 中轻松组合两个数组中的元素,交替元素?

javascript - 如何处理javascript中不同元素上的事件以进行响应式设计

javascript - 一旦 session 存储!=未定义,如何运行函数

Javascript:图像点击然后滑动大图像