【问题标题】:Fade ul menu element in and out on mouse hover鼠标悬停时淡入淡出 ul 菜单元素
【发布时间】:2012-04-25 14:24:17
【问题描述】:

当用户使用 jQuery 将鼠标悬停在无序列表菜单上时,我正在尝试创建平滑的淡入/淡出效果。到目前为止,当用户将鼠标悬停在包含子项的菜单项上时,我可以淡入子菜单,但我我正在努力隐藏它。

要求如下-如果鼠标不在子菜单项或其父项上-淡出子菜单列表。

我包含了我的菜单和 HTML 标记的屏幕截图,请建议我如何按照上面列出的要求隐藏菜单:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Home</title>
    <link href="Styles/Style.css" rel="stylesheet" type="text/css" />
    <script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>
    <script type="text/javascript">
        jQuery(document).ready(function () {

            $('#subList').css("display", "none");

            $('#item3').mouseover(function () {
                $('#subList').fadeIn('slow');
                $('#subList').css("display", "block");
            });

            $('#subItem1').mouseover(function () {
                $('#subList').css("display", "block");
            });

            $('#subItem2').mouseover(function () {
                $('#subList').css("display", "block");
            });

            $("#subItem1").mouseleave(function () {
                $("#subList").fadeOut("slow");
            });

            $('#subItem2').mouseleave(function () {
                $('#subList').fadeOut("slow");
            });
        });
    </script>
</head>
<body>
    <div class="menu">
        <ul>
            <li><a href="item4.htm">Menu Item 4</a></li>
            <li><a href="#" id="item3">Menu Item3</a>
                <ul id="subList">
                    <li id="subItem1"><a href="subItem1.htm">Sub Item 1</a></li>
                    <li id="subItem2"><a href="subItem2.htm">Sub Item 2</a></li>
                </ul>
            </li>
            <li><a href="item2.htm">Menu Item 2</a></li>
            <li><a href="item1.htm">Menu Item 1</a></li>
        </ul>
    </div>
</body>
</html>

【问题讨论】:

  • 你能详细说明你的代码有什么问题吗?我已将你的代码复制到 jsfiddle 链接及其工作 jsfiddle.net/2yEtK

标签: jquery html jquery-ui


【解决方案1】:

试试这个脚本:

$(function(){
    $(".menu ul li").hover(function(){
             $(this).children("ul").stop().fadeIn("slow");
       },
       function(){
             $(this).children("ul").stop().fadeOut("slow");   
    })
})

http://jsfiddle.net/2yEtK/1/

【讨论】:

  • 赞成 Fiddle 上的版本 - 这个版本缺少 stop() 调用。
【解决方案2】:

试试这个脚本:

 jQuery(document).ready(function () {

        $('#subList').css("display", "none");

        $('#item3').parent().hover(function () {
            $('#subList').fadeIn('slow');
            $('#subList').show();
        },
            function(){
                $('#subList').fadeOut('slow');
                $('#subList').hide();
        }
        );
    });

这里有 JSFiddle 链接: http://jsfiddle.net/scQ9W/1/

您也可以使用 slideDown() 和 slideUp()。请参阅此链接: http://jsfiddle.net/scQ9W/2/

应用一些 css 后: http://jsfiddle.net/scQ9W/3/

【讨论】:

    【解决方案3】:

    跳过 $("#subItem1/subItem2").mouseleave 并使用...

    $('#subList').mouseleave(function () {
       $(this).fadeOut("slow");
    });
    

    改为?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-26
      • 1970-01-01
      • 2013-01-07
      • 1970-01-01
      相关资源
      最近更新 更多