自定义jQuery下拉列表

时间:2009-10-07 14:10:15

标签: jquery drop-down-menu

我正在使用jQuery创建一个自定义的简单下拉列表,它隐藏/显示基于状态的元素。

我现在遇到的问题是,当你查看隐藏的所显示元素时,你无法将鼠标移动到创建的下拉列表中。

关于如何解决问题的任何想法,是否有更简单的方法来做我所拥有的?我将重复使用它并且不确定设置代码的最佳方法我不需要复制/粘贴六次。

$(function(){
    $("#dog-nav").hover(
      function(){
        $(".sub-drop-box-dog").show("fast");
      }, 
      function(){
        $(".sub-drop-box-dog").hide("fast");
      }
    );
    $("#cat-nav").hover(
      function(){
        $(".sub-drop-box-cat").show("fast");
      }, 
      function(){
        $(".sub-drop-box-cat").hide("fast");
      }
    );

});

2 个答案:

答案 0 :(得分:4)

你应该像这样使用HTML:

<div id="#menu">
  <ul>
    <li>
      <a href="#">Menu1</a>
      <ul>
        <li><a href="#">Submenu A</a></li>
        <li><a href="#">Submenu B</a></li>
        <li><a href="#">Submenu C</a></li>
      </ul>
    </li>
    <li>
      <a href="#">Menu2</a>
      <ul>
        <li><a href="#">Submenu D</a></li>
        <li><a href="#">Submenu E</a></li>
        <li><a href="#">Submenu F</a></li>
      </ul>
    </li>
  </ul>
</div>

然后jQuery就像这样:

$("#menu li").hover(function() {
  $(this).find("ul").show("fast");
}, function() {
  $(this).find("ul").hide("fast");
});

然后当您将鼠标悬停在子菜单上时,实际上仍然将鼠标悬停在主菜单上,然后它将不会关闭。 上面的示例也很灵活,因此您不必为每个菜单编写一次。

答案 1 :(得分:0)

为了适应鼠标驾驶错误,您应该查看jQuery.hoverIntent和/或jQuery.superfish插件。