【发布时间】:2014-02-08 09:17:09
【问题描述】:
我有一个菜单,这个菜单在某些项目中有子菜单。
我使用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 的菜单就可以了?
-
您应该在问题本身中包含您的相关代码,以便在 jsFiddle 关闭时它具有价值
-
@LeeTaylor:比起 jquery,我更喜欢原生 javascript。
-
不使用javascript怎么样?
-
@ZachSaucier:
using javascript at all,很抱歉,你的话不清楚或者我不明白。
标签: javascript html css menu