javascript - jQuery 扩展菜单

标签 javascript jquery

我有这个 html 代码:

<ul id="nav">
    <li>Heading 1
        <ul>
            <li>Sub page A</li>
            <li>Sub page B</li>
            <li>Sub page C</li>
        </ul>
    </li>
    <li>Heading 2
        <ul>
            <li>Sub page D</li>
            <li>Sub page E</li>
            <li>Sub page F</li>
        </ul>
    </li>
</ul>

使用这段 JS 代码:

$(function(){
    $('#nav>li>ul').hide();
    $('#nav>li').mouseover(function(){
        if ($('#nav ul:animated').size() == 0) {
            $heading = $(this);
            $expandedSiblings = $heading.siblings().find('ul:visible');
            if ($expandedSiblings.size() > 0) {
                $expandedSiblings.slideUp(500, function(){
                    $heading.find('ul').slideDown(500);
                });
            }
            else {
                $heading.find('ul').slideDown(1000);
            }
        }
    });
})

目前代码是这样工作的:单击标题 1 时,菜单会展开。单击标题 2 时,标题 2 子菜单展开,标题 1 子菜单关闭。我需要将其修改为:子菜单必须在鼠标移出时自动关闭。 有人可以帮我吗? 提前致谢!

最佳答案

这是一个略有不同的动画(模拟滑动,而不是一个接一个地滑动),但如果它是一个选项.hover()使用 mouseentermouseleave而不是 mouseovermouseout (对 child 开火)会简单得多,像这样:

$(function(){
    $('#nav>li>ul').hide();
    $('#nav>li').hover(function(){
        $(this).find('ul').slideToggle(500)
               .siblings().find('ul:visible').slideUp(500);
    });
})

关于javascript - jQuery 扩展菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4561558/

相关文章:

jquery - 我的 jQuery "showcase"- 不透明度问题 :)

Javascript从字符串中提取特定文本的最佳方法

javascript - 按符号过滤的柯里化(Currying)函数无法在 Typescript 中获得兼容的函数实现

javascript - 在 ajax 成功函数中显示隐藏的 div 以显示剩余的注册表单

jquery - 为什么我使用 jquery.val() 得到 "undefined"?

javascript - 添加缩放会破坏菜单滚动功能

javascript - 如果标量变量 > 0,Perl 更改图像/css

javascript - 多个单元格的AJAX计算

javascript - 如何在 Node.js 中关闭文件对话框?

php - javascript 和 php 不太工作