Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何制作菜单列表;可折叠的;?_Javascript_Html_Joomla_Menu_Collapsable - Fatal编程技术网

Javascript 如何制作菜单列表;可折叠的;?

Javascript 如何制作菜单列表;可折叠的;?,javascript,html,joomla,menu,collapsable,Javascript,Html,Joomla,Menu,Collapsable,我的菜单有4个主要项目,每个项目有3到5个子项目 <ul id="navigation"> <li><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>

我的菜单有4个主要项目,每个项目有3到5个子项目

<ul id="navigation">
    <li><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><a>Hardware</a> 
    </li>
    <li class="sub"><a href="javascript:void(0);" class="sub_ha1"> › Instalação/Configuração de Componentes</a>
请检查

正如您在JSFIDLE中看到的,当单击时,所有菜单项都会在另一个div中显示一些文本。 我把它放在那里,以防需要进一步的javascript帮助。 我想要的是将所有的.sub菜单折叠起来,当我将鼠标移到其中一个主菜单上时,它会展开相应的.sub菜单项,以便用户可以看到。 谢谢

编辑:

我设法在其中一条评论中得到了一个不错的教程,并想出了


我现在需要的是一种显示相应.main菜单中的所有.sub菜单的方法,而不是仅使用HTML和CSS

HTML

JS(jQuery)打开所有子菜单

$('#menu li>ul').parent().addClass('selected');
没有Jquery的JS

var menus = document.getElementById('menu').getElementsByTagName('li') 
for(var row in menus){
     if(typeof menus[row] == 'object' && menus[row].getElementsByTagName('ul').length > 0){
         menus[row].getElementsByTagName('ul')[0].className = 'selected';
     }
}

我的解决方案类似于问题编辑中提到的解决方案,但当单击开始时,已打开的列表项不会重新打开:


如果您有性能问题,可以使用show()和hide()来代替slideUp()和slideDown()。

检查一下!您是否专门在寻找javascript解决方案?如果您愿意,您可以使用CSS和HTML的一些调整来完成此任务。@dentaku我从上面的视频中获得了一个很好的脚本,我只需要稍微调整一下,就可以开始了。(:@auicsc我用了那个教程,想出了一些非常好的方法,尽管还需要一些调整。@BrunoCharters很高兴听到它。如果你对直接的CSS解决方案感兴趣,请查看:hover psuedo类。:)这是正确的解决方案,先生。谢谢我正在标记为正确的altho,如果你知道我可以做什么来调整我的js以显示所有子菜单。告诉我,我没法用。奇怪。我看起来都很好。你能给我做一个三明治吗?
$('#menu li>ul').parent().addClass('selected');
var menus = document.getElementById('menu').getElementsByTagName('li') 
for(var row in menus){
     if(typeof menus[row] == 'object' && menus[row].getElementsByTagName('ul').length > 0){
         menus[row].getElementsByTagName('ul')[0].className = 'selected';
     }
}
$('.content').hide();
$('.listelement').on('click', function(){
  if(!($(this).children('.content').is(':visible'))){
    $('.content').slideUp();
    $(this).children('.content').slideDown();
  } else {
    $('.content').slideUp();
  }
});