jquery - 调试 CSS 下拉菜单 jQuery 动画

标签 jquery css debugging animation drop-down-menu

我正在尝试调试以下脚本以确保获得最佳、理想的用户体验。此脚本未按预期工作,as seen on this fiddle .

    $("ul.menu li").mouseover(function() {
        $(this).find("ul.sub-menu").animate({"opacity": "show"}, 800, "swing");

        $(this).hover(function() {}, function(){
            $(this).find("ul.sub-menu").animate({"opacity": "hide"}, "slow");
        });
    });

如您所见,动画最初不会触发。此外,如果用户不小心将鼠标悬停在多个链接上,那么不需要的动画就会卡住播放数秒。我想编辑这种响应能力。在使用 jQuery 时,目前在专业 UI 设计中处理此问题的一些最佳方法是什么?我如何将这些解决方案实现到我的脚本中?

最佳答案

您正在嵌套 mouseover().hover(),这是主要问题。您只是想在将鼠标悬停在上面时显示一些内容,然后在悬停时反转动画。

试试这个:http://jsfiddle.net/pF8wZ/4/

jQuery(document).ready(function($) {
    $("ul.menu > li").hover(
        function() {
            $(this).find("ul.sub-menu").stop().animate({
                height: 'toggle',
                opacity: 'toggle'
            });
        }
    );
});

我还从 fiddle 中清理了您的 CSS。你只需要这个来使悬停行为起作用:

#access {
background: #000;
margin: 0 auto;
display: block;
float: left;
    position: relative;
}
ul.menu { 
    list-style: none;
    margin: 0;
}
ul.menu > li {
    float: left;
    padding: 5px;
    background: #ccc;
}
#access ul .sub-menu {
    position: absolute;
    left: 0;
    top: 100%;
    margin: 0;
    width: 200px;
    background-color: #474747;
    -moz-border-radius-bottomleft: 10px;
    -webkit-border-bottom-left-radius: 10px;
    -moz-border-radius-bottomright: 10px;
    -webkit-border-bottom-right-radius: 10px;
    display: none;
}
#access ul .sub-menu a {
    background: #333;
    line-height: 1em;
    display: block;
    padding: 3px 5px;
    background-image: -moz-linear-gradient(100% 100% 90deg, #474747, #939393);
    background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#939393), to(#474747));
}

和 HTML:

<div id="access">
<div class="menu-header">

<ul id="menu-wordpress-sandbox-menu" class="menu">
    <li id="menu-item-17" class="menu-item">
        <a href="#">Fruits</a>
        <ul class="sub-menu">
            <li id="menu-item-19" class="menu-item"><a href="#">Oranges</a></li>
            <li id="menu-item-20" class="menu-item"><a href="#">Apples</a></li>
        </ul>
    </li>
    <li id="menu-item-32" class="menu-item">
        <a href="#">Colors</a>
        <ul class="sub-menu">
            <li id="menu-item-30" class="menu-item"><a href="#">Blue</a></li>
            <li id="menu-item-31" class="menu-item"><a href="#">Red</a></li>
        </ul>
    </li>
    <li id="menu-item-33" class="menu-item">
        <a href="#">Links</a>
        <ul class="sub-menu">
            <li id="menu-item-34" class="menu-item"><a href="#">Google</a></li>
            <li id="menu-item-35" class="menu-item"><a href="#">Yahoo!</a></li>
        </ul>
    </li>
</ul>

</div>
</div>

关于jquery - 调试 CSS 下拉菜单 jQuery 动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14555380/

相关文章:

javascript - 添加 sum 并将其替换为 3 个选择

javascript - 如何在刷新时保留点击卡片的背景颜色?

javascript - 用不同的类包装两个 div

oracle - 仅在调试时出现 : java. io.IOException:现有连接被远程主机强制关闭

macos - Perl GUI 调试器 - OSX

javascript - 检查图像是否以 jQuery(或纯 JavaScript)加载

javascript - jQuery 每个元素的子元素

javascript - 结合可拖动和可排序导致 css 高度问题

css - 宽度 :100% without Position:absolute/fixed

调试中的 C 函数崩溃(未给出错误)