Javascript 下拉列表问题
我正在尝试创建一个下拉列表。我使用以下代码使其工作,但不完全工作:Javascript 下拉列表问题,javascript,jquery,Javascript,Jquery,我正在尝试创建一个下拉列表。我使用以下代码使其工作,但不完全工作: $(document).ready(function(){ $("#zone-bar li em").hover(function() { var hidden = $(this).parents("li").children("ul").is(":hidden"); $("#zone-bar>ul>li>ul").hide() $("#zone
$(document).ready(function(){
$("#zone-bar li em").hover(function() {
var hidden = $(this).parents("li").children("ul").is(":hidden");
$("#zone-bar>ul>li>ul").hide()
$("#zone-bar>ul>li>a").removeClass();
if (hidden) {
$(this).parents("li").children("ul").toggle()
.parents("li").children("a").addClass("zoneCur");
}
});
});
我设法使其工作,所以悬停下拉列表将出现,但当您移动到从下拉列表中选择一个项目时,下拉列表关闭。我该如何解决这个问题
如果我把它放到onclick,它会工作,但是你必须点击箭头再次关闭它。您可以在当前使用onclick时看到一个实例,请尝试将鼠标悬停在
#zone-bar li
而不是在em上
更新,是的,您需要修改脚本:
$("#zone-bar li").hover(function() {
var hidden = $(this).children("ul").is(":hidden");
$("#zone-bar>ul>li>ul").hide()
$("#zone-bar>ul>li>a").removeClass();
if (hidden) {
$(this).children("ul").toggle()
.children("a").addClass("zoneCur");
}
})
然而,使用鼠标器的建议可能更优越,似乎这会导致瞬间闪烁
你可能想考虑用纯CSS来做这件事,没有明显的理由使用jQuery来创建这个效果。
#zone-bar li{ height:1em; overflow:hidden};
#zone-bar li:hover{ height:auto};
试着把鼠标悬停在
#zone-bar li
而不是在em上
更新,是的,您需要修改脚本:
$("#zone-bar li").hover(function() {
var hidden = $(this).children("ul").is(":hidden");
$("#zone-bar>ul>li>ul").hide()
$("#zone-bar>ul>li>a").removeClass();
if (hidden) {
$(this).children("ul").toggle()
.children("a").addClass("zoneCur");
}
})
然而,使用鼠标器的建议可能更优越,似乎这会导致瞬间闪烁
你可能想考虑用纯CSS来做这件事,没有明显的理由使用jQuery来创建这个效果。
#zone-bar li{ height:1em; overflow:hidden};
#zone-bar li:hover{ height:auto};
它的行为可能是这样的,因为hover打算执行两个函数。一个给mouseenter,一个给mouseleave 当你只给它一个,我认为它会激发两个事件的一个 使用鼠标指针代替悬停
它的行为可能是这样的,因为hover打算执行两个函数。一个给mouseenter,一个给mouseleave 当你只给它一个,我认为它会激发两个事件的一个 使用鼠标指针代替悬停
当我使用它时,当我将鼠标悬停在它上面时,什么都不会发生。悬停以便你能看到电子显微镜的效果。当我使用它时,任何事情都不会发生。当我将鼠标悬停在它上面时,它当前是开着的。悬停以便你能看到电子显微镜的效果。谢谢你,它工作得很好。还有一件事,有可能实现吗因此,当鼠标移出下拉菜单时,它会消失,因为当鼠标离开下拉框时,菜单仍在尝试将.mouseleave处理程序放置在$zone bar>ul>li>ul上,以便在鼠标移动时将其隐藏。或者,将每个菜单组合包装在一个容器中,并使用两个必需的处理程序函数在该容器上放置一个悬停事件。这样,鼠标悬停部分只有在离开容器时才会启动。非常感谢你,第一个想法很好,我使用了鼠标悬停,效果很好!感谢您的时间。感谢您的时间。它工作得很好。还有一件事,当鼠标移出下拉菜单时,它可能会消失,因为当鼠标离开下拉框时,菜单仍保持不变,请在$zone bar>ul>li>ul上放置一个.mouseleave处理程序,以便在鼠标移动时将其隐藏。或者,将每个菜单组合包装在一个容器中,并使用两个必需的处理程序函数在该容器上放置一个悬停事件。这样,鼠标悬停部分只有在离开容器时才会启动。非常感谢你,第一个想法很好,我使用了鼠标悬停,效果很好!谢谢你抽出时间。