javascript - 我希望子菜单在鼠标移到它上面时保持打开状态

标签 javascript html css menu

我有一个菜单,这个菜单在某些元素中有子菜单。

我使用 XHTML + CSS 来创建主菜单和子菜单,我还使用 native javascript 来显示和隐藏子菜单,当用户将鼠标移到具有子菜单的元素上时。

当鼠标移到包含子菜单的元素上时,子菜单出现,但当鼠标光标移到子菜单上时,子菜单消失。

我想要的是,如果鼠标光标在主菜单中的元素或子菜单中的元素上,则子菜单保持可见

HTML

<div class="box">
<ul>
    <li class="havSub">Item 1
        <div>
            <ul>
                <li> <a href="#"> Sub 1 </a> </li>
                <li> <a href="#"> Sub 2 </a> </li>
            </ul>
        </div>
    </li>
    <li> <a href="#"> Item 2 </a> </li>
    <li> <a href="#"> Item 3 </a> </li>
    <li class="havSub">Item 4
        <div>
            <ul>
                <li> <a href="#"> Sub 1 </a> 
                </li>
                <li> <a href="#"> Sub 2 </a> 
                </li>
            </ul>
        </div>
    </li>
    <li> <a href="#"> Item 5 </a> 
    </li>
</ul>

CSS

.box{width:150px; border:2px solid #ccc; text-align:center; margin-top:50px;}
.box ul {padding:0; margin:0; list-style-type:none;}
.box ul li {margin-bottom:1px; display:block; padding:5px; background-color:#fff000; color:#ff0000; font:bold 20px arial; cursor:pointer;}
.box ul li:hover {background-color:#ffff00; color:#ff0000;}
.box ul li a {display:block; color:#ff0000; font:bold 20px arial; text-decoration:none;}
.box ul li div {position:relative; left:145px; top:-29px; display:none;}
.box ul li div ul {position:absolute;}

Javascript

document.addEventListener('mouseover', function (event) {
    event = (event) ? event : window.event;
    if (event.target.className === 'havSub') {
        event.target.children.item(0).style.display = 'block';
        event.target.addEventListener("mouseout", function () {
            event.target.children.item(0).style.display = 'none';
        });
    }
});

可以看到JSFiddle demo

最佳答案

您可以很容易地解决这个问题,同时使用以下代码消除对 jQuery 的需求

.box ul li:hover * {
    display:block;
}

Demo

它适用于任何支持 CSS2 的浏览器,因此 IE7+

关于javascript - 我希望子菜单在鼠标移到它上面时保持打开状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21213063/

相关文章:

html - CSS Center 在一个 div 中放置一堆图像

html - 如何在 HTML 和 CSS 中将图像设置为按钮?

Squarespace 中的 JavaScript 不起作用?

javascript - 为什么社交图标不显示

html - Chrome 在 <img> 中加载 SVG 时发出警告

javascript - SEO - Onload 后通过 JavaScript 进行标题标签?

javascript - 在 JavaScript 中实现鼠标悬停功能

css - 如何居中对齐网格列(col-md-4 和 col-md-8)

javascript - Jquery自动完成数据显示标签和商店ID

javascript - meteor JS : Input value in a table is displayed twice