当使用JAVASCRIPT单击另一个主菜单项时,我可以关闭子菜单吗?

时间:2015-01-25 04:24:42

标签: javascript html css menu submenu

    function showMenu(parentElement){
    var uls= parentElement.getElementsByTagName("ul");
    if (uls.length > 0)
        uls[0].setAttribute("style","display: block");

}

function load(){ 
    var lis = document.getElementsByTagName("li"); 
    for (var i = 0; i < lis.length; i++) {
        lis[i].addEventListener("click", function(){
            showMenu(this);
        });
    }
}

我有这个脚本,这使得我可以打开正确的&#39; ul&#39;当&#39; li&#39;点击。 然后我添加了这个

 function Meny(){

    var parentElement = document.getElementById("cssmenu");
            var lis = parentElement.getElementsByTagName("ul");
            for (var i = 0; i < lis.length; i++) {

            lis[i].setAttribute("style","background: white");

            }
}

并将其附加到菜单外部的div上,以便菜单在其他任何地方点击时很好地关闭。 然后遇到一个定位问题,所以我将我的cssmenu设置为position:fixed。 我可以忍受这一点,我知道这可能是一种不好的做法。然后我发现,我可以用不透明度0.2隐藏它,当它变成200%以上时,然后在悬停时可见。

我现在的问题是,当我点击另一个li时,它不会关闭其他li的ul。 因此子菜单打开,但是当我点击它的兄弟或任何其他li时,它不会关闭,这不是那个li的一部分。 我在菜单中使用this关键字,如下所示:

<nav id="cssmenu">
<li onclick="showMenu(this);"><a></a>
<ul>
<li></li>
</ul>
</nav>

我有一个更长的菜单,有很多子菜单。 我已经看到为此工作jquery了,但是不能让jquery工作,而且,我渴望学习javascript,因为逻辑在某种程度上是可以理解的。我不熟悉的所有关键词,以及所有这些ul,li,ul,至少可以说令人困惑..

我的css非常直接,是学习所有ul li ul li规则的好方法。只需简单的定位,我就能理解。

#cssmenu{}
#cssmenu ul li{}
#cssmenu ul ul {display:none}
#cssmenu a{}

我最近开始将下拉悬停菜单转换为点击菜单,更适合触摸屏,并至少保留一些其他悬停效果。

是否可以使用javascript,让孩子接触,关闭,按下兄弟姐妹,或叔叔或阿姨或其他任何东西,但这些李的元素?

我用jquery看过它,就像在这些例子中一样:

http://jsfiddle.net/nkKja/

http://jsfiddle.net/contendia/ddXBU/4/

我试图在第二个例子中使用这个代码,因为它对我和李的说法很贴切,而没有&#39; class&#39;在菜单中指定。 然后我把#leftmenu改为#cssmenu,没有任何运气。 我只有我的

<nav id="cssmenu">

作为我菜单中的一个独特元素,而THIS关键字很好地处理了这个问题。另外,我读到了唯一的id是优选的,因为ul li(标签),加载速度慢于id,易于理解。 我没有这么大的页面,至少还没有,这些都是我关心的问题,而且我并不感兴趣为我的所有菜单项提供唯一的ID。 我当然可以使用jquery,但这是我需要阅读的关于如何实现的内容,我尝试按照这些说明操作,但不知何故失败了。

vertical drop down menu displays sub menu and when clicking on another menu item closes the previous menu item

另外,我完全不明白,为什么3&#39; rd脚本正在关闭cssmenu,我尝试更改背景:white,显示:none,这只是隐藏我的整个菜单。我觉得这很奇怪,就像我之前尝试过的那样,它可以改变每个&#39; ul的颜色,除了顶部的,可见的顶级菜单项。

感谢任何回应,我被告知要使用jquery,但是#*#当它不能工作时会有点痛苦,我觉得我只是非常接近解决方案。 在我看来,需要另一个if语句,似乎无法弄清楚那个,作为数组,FOR关键字,这是我真正需要了解的更多信息。

0 个答案:

没有答案