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处理程序,以便在鼠标移动时将其隐藏。或者,将每个菜单组合包装在一个容器中,并使用两个必需的处理程序函数在该容器上放置一个悬停事件。这样,鼠标悬停部分只有在离开容器时才会启动。非常感谢你,第一个想法很好,我使用了鼠标悬停,效果很好!谢谢你抽出时间。