【问题标题】:DropDown menu with hover on parent text将鼠标悬停在父文本上的下拉菜单
【发布时间】:2012-12-10 16:23:22
【问题描述】:

以下是基本的下拉菜单,子菜单出现在父鼠标悬停上。

<script type="text/javascript">
  $(document).ready(function () { 
    $('#nav li').hover(
      function () {
      //show its submenu
        $('ul', this).stop().slideDown(100);
      }, 
      function () {
      //hide its submenu
        $('ul', this).stop().slideUp(100); 
      }
    );
  });
</script>

<style type="text/css">
  #nav li {background-color:#CCC; }
</style>

<ul id="nav">
  <li><a href="#" class="selected">Parent A</a>
    <ul>
      <li><a href="#">Item a1</a></li>
      <li><a href="#" class="selected">Item a2</a></li>
      <li><a href="#">Item a3</a></li>
    </ul>
  </li>
  <li><a href="#">Parent B</a>
    <ul>
      <li><a href="#">Item b1</a></li>
      <li><a href="#">Item b2</a></li>
      <li><a href="#">Item b3</a></li>
      <li><a href="#">Item b4</a></li>
    </ul> 
  </li>
</ul>

当前,当鼠标悬停在父框区域的任意位置(即也在文本之外,在父 div 的不可见区域)时,会出现子元素。

我希望孩子只出现在父链接悬停时(仅在“href”文本上)。

我在任何地方都找不到答案。

【问题讨论】:

    标签: javascript jquery html


    【解决方案1】:

    尝试使用a 元素作为hover 的目标而不是整个li,如下所示:

    <script type="text/javascript">
      $(document).ready(function () { 
        $('#nav ul').hide();
    
        $('#nav li > a').hover(
          function () {
          //show its submenu
            $('ul', this.parentNode).stop().slideDown(100);
          }
        );
       $('#nav li').hover(null, 
          function (e) {
          //hide its submenu
            $('ul', this.parentNode).stop().slideUp(100); 
          }
       );
      });
    </script>
    

    查看工作demo

    【讨论】:

    • @尼尔森。非常感谢,这确实是一个不错的解决方案。我现在正在尝试添加第三层,但使用您的 JavaScript 代码我无法完成。请看下面的链接,我没有得到任何回复,请你帮忙。 stackoverflow.com/questions/13810487/…
    • 是的,我已经使用新代码发布了该问题的答案以处理第三级,您现在有足够的声誉来投票,所以如果您认为我的回答是正确的,您也可以投票(向上箭头)如果您对此感到满意 :-)。
    猜你喜欢
    • 1970-01-01
    • 2013-07-16
    • 1970-01-01
    • 1970-01-01
    • 2019-04-01
    • 2018-08-15
    • 2022-08-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多