【问题标题】:jQuery help with jumpy slidedown menujQuery 帮助与跳跃的下拉菜单
【发布时间】:2011-03-13 22:21:38
【问题描述】:

我用 jQuery 编写了这段代码,以便有一个简单的悬停向下滑动菜单。它可以工作,但有时会非常跳动。当您将鼠标在某个位置或稍快滑过它时,它会跳开/关闭并闪烁……不知道如何补救?

这是我当前的代码:

this.navLi = jQuery('nav ul li').children('ul').css("display","block").hide().end();
this.navLi.hover(function() {
    // mouseover
    jQuery(this).find('> ul').stop(true, true).slideDown(100);
}, function() {
    // mouseout
    jQuery(this).find('> ul').stop(true, true).slideUp(100);
});

【问题讨论】:

    标签: jquery menu slidedown


    【解决方案1】:

    我建议您试用hoverIntent 插件。它非常适合这样的事情。

    这是jsFiddle 上的示例。它非常适合您设置代码的方式。

    请注意,您的第一个选择器正在寻找标签<nav>,对吗?

    示例
    HTML

    <div id="nav">
        <ul>
            <li class="head">
                First
                <ul>
                    <li>1.1</li>
                    <li>1.2</li>
                </ul>
            </li>
            <li class="head">
                Second
                <ul>
                    <li>2.1</li>
                    <li>2.2</li>
                </ul>
            </li>
    
        </ul>
    </div>
    

    Javascript

    jQuery(function() {
        this.navLi = jQuery('#nav ul li').children('ul').css("display","block").hide().end();
        this.navLi.hoverIntent(function() {
            // mouseover
            jQuery(this).find('> ul').slideDown(100);
        }, function() {
            // mouseout
            jQuery(this).find('> ul').slideUp(100);
        });
    });
    

    CSS

    #nav, #nav ul { list-style: none; }
    #nav, #nav * { padding: 0; margin: 0; }
    li.head { width: 100px; float: left; border: 1px black solid; }
    

    【讨论】:

    • @Drackir-thx 为此,虽然我试图在不增加插件负载的情况下做到这一点,但现在必须这样做......
    • @Rick:插件非常小(
    【解决方案2】:

    这是stop方法中second true(参数)的效果,来自文档:

    .stop( [ clearQueue ], [ jumpToEnd ] )
    clearQueueA 布尔值,表示是否 也可以删除排队的动画。 默认为假。 jumpToEndA 指示是否完成的布尔值 当前动画立即。 默认为假。

    只要去掉第二个参数,看看是不是你想要的。

    【讨论】:

    • 您是说将鼠标悬停时的 stop() 和 mouseout 都更改为 stop(true,false)?还是只是鼠标悬停?
    • @Rick: 把它改成stop(true),现在我会在两者上都改,但你也可以删除第一个参数,只使用stop()!测试它并使用最适合您的!
    • @ifaour-thx 寻求帮助,但我尝试了所有组合,但情况变得更糟,因为它设置为 false,如果我将鼠标快速悬停在它上面,在下一次悬停时,它甚至不会打开所有方式...
    猜你喜欢
    • 2022-11-14
    • 1970-01-01
    • 1970-01-01
    • 2013-07-28
    • 2013-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多