我已经建立了一个可以正常工作的下拉菜单。它是这样的:
- 主菜单项在水平条中,然后
- 当悬停在任何项目上时,会显示大下拉框(带有子菜单链接)。
- 这是我的代码:
HTML:
<!-- Based on Bootstrap -->
<div class="navbar navbar-inverse">
<div class="nav-collapse collapse">
<ul class="nav">
<li><a href="#about">First item</a>
<div id="about-horizontal-submenu" class="horizontal-submenu">
<div class="submenu-container span3">
<ul>
<li><a href="#">Links</a></li>
<li><a href="#">Links</a></li>
</ul>
</div>
<!-- and 4x similar div (to have 12 cols) -->
</div>
</li>
<li><a href="#about">Dropdown</a>
<div id="about-horizontal-submenu" class="horizontal-submenu">
<!-- 3x similar div (like above) and then: -->
<div class="submenu-container span3">
<ul>
<li><a href="#">I want to go here</a></li>
<li><a href="#">Links</a></li>
</ul>
</div>
</div>
</li>
<!-- And then goes another main menu item... -->
</ul>
</div>
</div>
</div>
JS:
jQuery(document).ready(function($) {
'use strict';
$('.navbar .nav > li').hover(function() {
var $el = $(this);
$el.addClass('hover');
var $submenu = $el.find('.horizontal-submenu');
if ($submenu.is(':hidden')) {
$submenu.slideDown(200);
}
}, function() {
var $el = $(this);
$el.removeClass('hover');
var $submenu = $el.find('.horizontal-submenu');
if ($submenu.is(':visible')) {
$submenu.hide();
}
});
});
问题
我想我需要在两者之前添加一点延迟 - 在第一次悬停时向下滑动子菜单和 - 更改子菜单内容(切换/悬停到另一个菜单项时)。
为什么?
当您将鼠标悬停在“下拉菜单”上并想要选择“我想搬到这里”时:
你必须从“Dropdown”项目向下,然后向右——这没关系(但不是很实用)。
问题是,当您按照图像显示的方式进行操作时(从“下拉菜单”直接到“我想搬到这里” - 您在途中遇到“第三项”并立即看到属于“第三项”的内容。这不是很好。
如果您能告诉我如何在很短的时间内延迟/忽略悬停在我的菜单项上,我将不胜感激。(我在http://FEI.com上找到了很好的菜单示例行为)