子菜单隐藏在主菜单之外的鼠标上
sub menu is hidden on mouseout of main menu
这看起来很容易,但我无法通过阅读SO…上的相关问题来解决我的问题,所以这是我的问题。我有:
<ul class="main-menu">
<li>Letters</li>
<li>Numbers</li>
</ul>
<ul class="sub-menu hidden">
<li>A</li>
<li>B</li>
<li>C</li>
</ul>
我希望.子菜单出现在.主菜单的鼠标悬停位置,并在鼠标悬停在.主和子上时保持可见
$(".main-menu, .sub-menu").hover(
function(){
$('.sub-menu').hide().removeClass('hidden').slideDown('fast');
}, function(){
$('.sub-menu').slideUp('fast');
}
);
但是当我将鼠标从主菜单中移出时,即使我将鼠标移出到子菜单中,也会触发mouseout,所以子菜单是隐藏的。
有什么建议吗?不过,重构HTML不是一种选择。
下面假设您有第二个子菜单来处理"Numbers"主菜单项,就像我在这里显示的一样:http://jsfiddle.net/aY7wW/-并进一步假设,当你说"重组HTML不是一个选项"时,你的意思是我甚至不能建议添加属性来将每个子菜单与其主菜单项相关联。为了在这个限制范围内工作,我使用了主菜单li元素索引与子菜单ul元素索引相关(显然,只有在子菜单与相应的主菜单项以相同的顺序定义时,这才有效)。如果你可以添加一些id属性或其他东西,它会在一定程度上简化代码,但无论如何:
var timerId,
$mainMenuItems = $(".main-menu li"),
$subMenus = $(".sub-menu");
$mainMenuItems.hover(
function(){
clearTimeout(timerId);
$subMenus.slideUp('fast');
$($subMenus[$mainMenuItems.index(this)]).hide()
.removeClass('hidden')
.slideDown('fast');
}, function(){
var i = $mainMenuItems.index(this);
timerId = setTimeout(function(){$($subMenus[i]).slideUp('fast');},500);
}
);
$subMenus.hover(
function() {
clearTimeout(timerId);
},
function() {
$(this).slideUp('fast');
}
);
其基本思想是使用setTimeout()
延迟从主菜单隐藏mouseout上的子菜单。这样可以让您有时间在子菜单上移动鼠标,如果您这样做,超时将被清除,因此不会被隐藏。然后,当您将鼠标从子菜单上移开时,它将被隐藏。但是,允许鼠标在不同的主菜单项之间移动,在初始悬停时,我们还清除任何未完成的超时,并隐藏之前显示的子菜单,以便只显示正确的子菜单。我使用了500毫秒的延迟,但很明显,你可以将其设置为任何你觉得自然的延迟。
工作演示:http://jsfiddle.net/aY7wW/
尝试将主菜单和子菜单都放在div中,并将悬停事件放在div上。
像这样的东西怎么样
$(".main-menu").mouseover(function () {
$('.sub-menu').slideDown('fast').click(function (){
$(this).slideUp('fast');
});
});
相关文章:
- 悬停下拉菜单即使在鼠标移出后也保持活动状态
- 如何激活下拉菜单:在一个元素上单击768px宽度下方,在另一个元素上将鼠标悬停在768px上方
- 鼠标后滑动菜单
- 如何在鼠标悬停时显示带有拉斐尔元素(圆、线)的上下文菜单
- 剑道上下文菜单 - 防止在鼠标按下时关闭
- 更改鼠标悬停在选择菜单上的颜色
- MDL菜单点击打开鼠标右键点击错误
- 顶级/下级菜单上的隐藏()延迟问题,但当鼠标再次进入时取消隐藏()
- jQuery菜单,点击鼠标左键显示和隐藏
- 如何在鼠标悬停时打开素数选择一个菜单
- 悬停菜单关闭孩子时,当我尝试将鼠标移动到它时.为什么?[JsFiddle]
- 在鼠标悬停时显示/隐藏菜单
- Extjs 菜单在 Firefox 中无法使用鼠标滚轮滚动
- 引导:将鼠标悬停在下拉菜单中时,父菜单突出显示
- 分机 4 鼠标悬停、鼠标退出和下拉菜单的问题
- Jquery 下拉菜单鼠标输入延迟
- Jquery-菜单鼠标悬停在<a>而不是<a><span>
- Javascript,css,html下拉菜单鼠标悬停
- jQuery下拉菜单鼠标离开问题
- JavaScript 菜单鼠标退出问题