1

我希望有人可以帮助我。我有以下问题:

http://jsfiddle.net/zhPAF/

加价:

<nav>
                <ul id="topNav">
                    <li id="topNavFirst"><a href="pages/about/about.php" id="aboutNav">About Us</a></li>
                    <li id="topNavSecond"><a href="pages/people/our-people.php" id="peopleNav">Our People</a>
                        <ul id="subList1">
                            <li><a href="pages/people/mike-hadfield.php">Mike Hadfield</a></li>
                            <li><a href="pages/people/karen-sampson.php">Karen Sampson</a></li>
                            <li><a href="pages/people/milhana-farook.php">Milhana Farook</a></li>
                            <li><a href="pages/people/kim-crook.php">Kim Crook</a></li>
                            <li><a href="pages/people/amanda-lynch.php">Amanda Lynch</a></li>
                            <li><a href="pages/people/gideon-scott.php">Gideon Scott</a></li>
                            <li><a href="pages/people/paul-fuller.php">Paul Fuller</a></li>
                            <li><a href="pages/people/peter-chaplain.php">Peter Chaplain</a></li>
                            <li><a href="pages/people/laura-hutley.php">Laura Hutley</a></li>
                        </ul>
                    </li>
                    <li id="serviceNavDropdown"><a href="our-services.php" id="servicesNav">Our Services</a>
                        <ul id="subList2">
                            <li><a href="pages/services/company-and-commercial.php">Company &amp; Commercial</a></li>
                            <li><a href="pages/services/employment.php">Employment</a></li>
                            <li><a href="pages/services/civil-litigation.php">Civil Litigation</a></li>
                            <li><a href="pages/services/debt-recovery.php">Debt Recovery</a></li>
                            <li><a href="pages/services/conveyancing.php">Conveyancing</a></li>
                            <li><a href="pages/services/commercial-property.php">Commerical Property</a></li>
                            <li><a href="pages/services/wills-and-probate.php">Wills &amp; Probate</a></li>
                            <li><a href="pages/services/family.php">Matrimonial &amp; Family</a></li>
                        </ul>
                    </li>
                    <li><a href="pages/news/news.php" id="newsNav">News</a></li>
                    <li><a href="pages/careers/careers.php" id="careersNav">Careers</a></li>
                    <li><a href="pages/contact/contact.php" id="contactNav">Contact</a></li>
                </ul><!-- /topNav -->
            </nav>​

CSS

#topNav {
float:right;
height:30px;
margin:0;
font-size:12px;
}

#topNav li {
display:inline;
list-style:none;
color:#666;
border-left: 1px solid #666;
padding: 0 0 0 3px;
}

#topNav li a:hover {
}

#topNavFirst {
border-left: 1px solid transparent !important;
}

#topNav ul{
background:#fff url(images/people-ul-bg.png) no-repeat;
border:1px solid #666;
border-top:0px solid transparent;
border-bottom:2px solid #666;
list-style:none;
position:absolute;
left:-9999px;
width:90px;
text-align:left;
padding:5px 0 5px 0px;
z-index:10;
}

#topNav ul li{
display:block;
border-left:0px;
margin-bottom: 0px;
padding:0;
}

#topNav ul a{
padding:0 0 0 5px;    
}

#topNav li:hover ul{
left:auto;
margin-left:55px;
margin-top:-1px;            
}

#topNav li:hover a { 
color:#369;
}

#topNav li:hover ul a{ 
text-decoration:none;
color:#666;
}

#topNav li:hover ul li a:hover{ 
color:#fff;;
width:100%;
}

#topNav ul li:hover {
background:#369;
display: block;
}

#topNav ul li a {
display: block;
padding:0 0 0 4px;
}

#serviceNavDropdown ul{ 
background:#fff url(images/service-ul-bg.png) no-repeat;
width:135px !important;
margin-left:117px !important;
margin-top:-1px;        
}

jQuery

jQuery(document).ready(function () {

        $('#subList1').css("display", "none");
        $('#topNavSecond').hover(function () {
            $('#subList1').fadeIn('slow');
        },
        function(){
            $('#subList1').fadeOut('slow');
        });
         $('#subList2').css("display", "none");
        $('#serviceNavDropdown').hover(function () {
            $('#subList2').fadeIn('slow');
        },
        function(){
            $('#subList2').fadeOut('slow');
        });
    });​

当 #topNavSecond ('Our People') 锚点悬停时,ul #subList1 应该淡入。现在,正如您从小提琴中看到的那样,它不会在第一次悬停时消失,而只会在随后的悬停时消失。同样,下一个锚点(“我们的服务”)也在做同样的事情,并且在它们之间移动时存在一些褪色问题。

我已经达到了 jquery 知识的极限(诚然,这并不多!)并且非常感谢一些帮助。

编辑>上面的代码是更正后的代码并且正在工作。但是下面的 jQuery 更好,添加了一些 .stop(true, true):

jQuery(document).ready(function () {

        $('#subList1').css("display", "none");
        $('#topNavSecond').hover(function () {
            $('#subList1').stop(true, true).fadeIn('slow');
        },
        function(){
            $('#subList1').stop(true, true).fadeOut('slow');
        });
         $('#subList2').css("display", "none");
        $('#serviceNavDropdown').hover(function () {
            $('#subList2').stop(true, true).fadeIn('slow');
        },
        function(){
            $('#subList2').stop(true, true).fadeOut('slow');
        });
    }); 
4

3 回答 3

2

您已将其设置$('#topNavSecond').parent().hover(function ()为#topNavSecond 的父级将是整个 UL。我相信你的意思 $('#topNavSecond').hover(function ()

见这里:http: //jsfiddle.net/zhPAF/1/

于 2012-06-14T18:53:32.360 回答
1

我没有看到任何闪烁,但也许我不理解。但是,您应该.stop()在动画发生之前添加一些 s,以防它没有完成。

        $('#subList1').css("display", "none");
        $('#topNavSecond').parent().hover(function () {
            $('#subList1').stop(true, true).fadeIn('slow');
        },
        function(){
            $('#subList1').stop(true, true).fadeOut('slow');
        });
         $('#subList2').css("display", "none");
        $('#serviceNavDropdown').parent().hover(function () {
            $('#subList2').stop(true, true).fadeIn('slow');
        },
        function(){
            $('#subList2').stop(true, true).fadeOut('slow');
        });

http://jsfiddle.net/imoda/zhPAF/3/

于 2012-06-14T18:54:28.287 回答
0

首先,我会为您的 css 做一些补充:将其添加到此:

#topNav li {
    position:relative;
}

添加此规则:

#topNav li ul {
    position:absolute;
    display:none;
}

现在,不要直接调用事物,而是使用 jQuery 通过标签类型和层次结构来获取它们:

$('#topNav li').hover(function () {
            $(this).children('ul').stop(true, true).animate({'opacity' : 'show'}, 'slow');
        },
        function(){
            $(this).children('ul').stop(true, true).animate({'opacity' : 'hide'}, 'slow');
        });

这将适用于 li 中包含的任何 ul,其中任何 id 为 topnav。使用 CSS 来指示定位。我选择了 animate,因为它的功能相同,并为您提供了更多控制……您可以轻松地添加 'height' : 'show' 和 'height' : 'hide' 以获得漂亮的动画效果。

我建议不要为 li 中的 ul 设置特定宽度。添加一个空格:nowrap; 到 li,然后使用一些填充在标签级别完成所有操作,ul 和 li 将形成这些。

另外,我会避免在除 a 之外的任何东西上使用 :hover,因为 IE 不能很好地处理它。

于 2012-06-14T19:23:04.670 回答