我正在尝试创建一个JavaScript(最好不是jQuery btw)网站菜单,当每个菜单项悬停时,它会缩小子链接的下拉。我几乎完全可以使用它,但我遇到了一些问题,无法在线找到解决方案。
在菜单按钮上,我有一个onmouseover事件,显示并动画子链接面板。如果您将鼠标移到另一个菜单按钮上,面板将消失,如果您已经悬停在另一个菜单按钮上,则会出现一个新面板。问题是,当你将鼠标从所需的菜单按钮移动到相应的面板上时,它会消失,显然是因为菜单按钮上有一个onmouseout事件才能做到这一点!我需要按钮上的onmouseout但是当鼠标在面板上移动时如何防止它触发隐藏功能?
我试图想办法解决这个问题,但到目前为止我已经失败了,所以任何帮助都会非常感激!
谢谢,
安迪
<script type="text/javascript">
var anim = new Animator();
function Animator() {
this.slideDown = function (element, height) {
var e = document.getElementById(element);
var counter = 0;
e.style.display = 'block';
var interval = window.setInterval(function () {
counter += 2;
e.style.height = counter + 'px';
if (counter >= height) {
clearInterval(interval);
}
}, 1);
};
this.hideSlide = function (element) {
var e = document.getElementById(element);
e.style.display = 'none';
e.style.height = 0 + 'px';
}
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div id="divMenuBar">
<div class="menuButton" onmouseover="anim.slideDown('divMenu1', 305);" onmouseout="anim.hideSlide('divMenu1');">Click Me</div>
<div id="divMenu1" class="slidingMenu menu1">
<ul>
<li>Option 1</li>
<li>Option 2</li>
<li>Option 3</li>
<li>Option 4</li>
<li>Option 5</li>
<li class="end">Option 6</li>
</ul>
</div>
<div class="menuButton" onmouseover="anim.slideDown('divMenu2', 305);" onmouseout="anim.hideSlide('divMenu2');">Click Me</div>
<div id="divMenu2" class="slidingMenu menu2">
<ul>
<li>Option 1</li>
<li>Option 2</li>
<li>Option 3</li>
<li>Option 4</li>
<li>Option 5</li>
<li class="end">Option 6</li>
</ul>
</div>
<div class="menuButton" onmouseover="anim.slideDown('divMenu3', 305);" onmouseout="anim.hideSlide('divMenu3');">Click Me</div>
<div id="divMenu3" class="slidingMenu menu3">
<ul>
<li>Option 1</li>
<li>Option 2</li>
<li>Option 3</li>
<li>Option 4</li>
<li>Option 5</li>
<li class="end">Option 6</li>
</ul>
</div>
<div class="menuButton" onmouseover="anim.slideDown('divMenu4', 305);" onmouseout="anim.hideSlide('divMenu4');">Click Me</div>
<div id="divMenu4" class="slidingMenu menu4">
<ul>
<li>Option 1</li>
<li>Option 2</li>
<li>Option 3</li>
<li>Option 4</li>
<li>Option 5</li>
<li class="end">Option 6</li>
</ul>
</div>
</div>
</form>
答案 0 :(得分:0)
我确信你有理由不想使用jQuery(或其他UI框架),所以我不会推动这个问题。但总的来说,您必须编写类似于这些框架如何执行其菜单的代码。
而不是像现在这样盲目地隐藏鼠标输出上的元素,而是需要构建逻辑来查看鼠标现在已经结束,如果它在子面板上,则需要保持面板可见性。如果你开始进入子菜单,这会变得相当棘手。
但是你写的,这里没有免费的午餐。您的按钮和菜单面板需要了解彼此以及它们之间的关系。而且你必须明确决定隐藏和显示什么以及何时隐藏。