我正在尝试使用 jquery 为我的网站创建一个简单的侧边栏,但我在使用它的悬停功能时遇到了一些问题。当用户将鼠标悬停在一个类别上时,假设会出现一个子菜单。如果悬停在上方或下方的类别,我希望关闭子菜单。我创建了一个 jsFiddle 来帮助展示我的问题以及子菜单如何不按应有的方式关闭。我已经尝试解决这个问题几个小时了,我将不胜感激任何帮助。
谢谢你。
我正在尝试使用 jquery 为我的网站创建一个简单的侧边栏,但我在使用它的悬停功能时遇到了一些问题。当用户将鼠标悬停在一个类别上时,假设会出现一个子菜单。如果悬停在上方或下方的类别,我希望关闭子菜单。我创建了一个 jsFiddle 来帮助展示我的问题以及子菜单如何不按应有的方式关闭。我已经尝试解决这个问题几个小时了,我将不胜感激任何帮助。
谢谢你。
您忘记在 mouseleave 函数中隐藏您的子条目。只需添加$(this).find(".submenu").hide();
到您现有的处理程序:
$(".category").mouseleave(function() {
$(this).find(".submenu").hide();
$(this).css("background-color", "#eee");
$(this).css("border", "1px solid grey");
$(this).css("border-bottom", "none");
$(this).css("width", "180px");
$(".category:last").css("border-bottom", "1px solid grey");
});
http://jsfiddle.net/ahren/BGcDc/8/
只需$(".submenu").hide();
在悬停开始时添加一个。
你忘了隐藏列表
$(".category").mouseleave(function() {
$(this).find(".submenu").hide();
})
但这可以通过仅使用 css 的面团来完成。通过:
.category .submenu{ display:none}
.category:hover .submenu{ display:block}
而且你所有的 .css() 边界都在那里(更有意义的是,如果你想制作一个跨浏览器动画来显示/隐藏它可能是有意义的)
只需像这样修改您的javascript:
$(".category").mouseleave(function() {
// add this
$(".submenu").hide();
$(this).css("background-color", "#eee");
$(this).css("border", "1px solid grey");
$(this).css("border-bottom", "none");
$(this).css("width", "180px");
$(".category:last").css("border-bottom", "1px solid grey");
});