jQuery 在第一次悬停时不适用于下拉菜单



我使用CSS创建了一个简单的下拉菜单,并希望使用jQuery创建一个fadein。淡入有效,但仅在您将鼠标悬停在列表元素上两次之后。第一个悬停没有淡入效果。

以下是 HTML 代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
    <title>dropdown_2</title>

    <link href="css/dropDrownNav.css" rel="stylesheet" type="text/css" />
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.8.3.min.js"></script>
    <script type="text/javascript">
        $(document).ready(function () {
            $("#nav li").has("ul").hover(function () {
                $(this).addClass("current").children("ul").fadeIn(500);
            }, function () {
                $(this).removeClass("current").children("ul").stop(true, true).css("display", "none");
            });
        });
</script>

</head>
<body>
   <!--begin added nav-->
    <div id="main-navigation" >
        <div id="nav">
        <ul>
            <li class="first"><a href="#">Home</a>
            <ul>
                <li><a href="#">Home1</a></li>
                <li><a href="#">Home2</a></li>
                <li><a href="#">Home3</a></li>
            </ul>
            </li>
            <li><a href="#">About Me</a>
            <ul>
                <li><a href="#">About Me1</a></li>
                <li><a href="#">About Me2</a></li>
                <li><a href="#">About Me3</a></li>
            </ul>
            </li>
            <li><a href="#">Portfolio</a>
            <ul>
                <li><a href="#">Web</a></li>
                <li><a href="#">Print</a></li>
                <li><a href="#">Photos</a></li>
            </ul>
            </li>
            <li><a href="#">Contact Me</a>
            <ul>
                <li><a href="#">Contact Me1</a></li>
                <li><a href="#">Contact Me2</a></li>
                <li><a href="#">Contact Me3</a></li>
            </ul>
            </li>
        </ul>
        </div>
    </div><!--end main navigation-->
    <!--end added nav-->
</body>
</html>

CSS代码:

*{ margin:0px; padding: 0px; }
#nav {
     font-family: arial, sans-serif;
     position: relative;
     width: 390px;
     height:56px;
     font-size:14px;
     color:#000;
     margin: 0px auto;
}
#nav ul {
     list-style-type: none;
}
#nav ul li {
     float: left;
     position: relative;
}
#nav ul li a {
     text-align: center;
     border-right:1px solid #000;
     padding:20px;
     display:block;
     text-decoration:none;
     color:#000;
}
#nav ul li ul {
     display: none
}
#nav ul li:hover ul {
     display: block;
     position: absolute;
}
#nav ul li:hover ul li a {
     display:block;
     background:#12aeef;
     color:#ffffff;
     width: 110px;
     text-align: center;
     border-bottom: 1px solid #f2f2f2;
     border-right: none;
}
#nav ul li:hover ul li a:hover {
     background:#6dc7ec;
     color:#fff;
}

链接到工作示例。

谢谢眼界

尝试从这行 css 中删除显示:块...

#nav ul li:hover ul {
 display: block;
 position: absolute;
}

我在淡入行中添加了一个 show().hide(),它似乎是这样工作的:

$("#nav li").has("ul").hover(function () {
    $(this).addClass("current").children("ul").show().hide().fadeIn(500);             
}, function () {                 
    $(this).removeClass("current").children("ul").stop(true, true).css("display", "none");           
});

http://jsfiddle.net/ewQB2/1/

相关内容

  • 没有找到相关文章

最新更新