jQuery:一次只展开一个面板

标签 jquery html css twitter-bootstrap-3

在每个 <li> 内什么时候<i>单击它会展开和折叠 <ul>接下来。需要让它再一次<i>单击它会折叠前一个 <ul> .

查看我的 fiddle

<ul class="nav-main">
    <li> <a href="/en/courses">Courses</a><i class="expand closed"></i>

        <ul class="drop">
            <li><a href="#">Campuses</a>
            </li>
            <li><a href="#">Online Learning</a>
            </li>
            <li><a href="#">Start dates and schedules</a>
            </li>
            <li><a href="#">Learning and Support</a>
            </li>
        </ul>
    </li>
    <li> <a href="#">Outcomes</a><i class="expand closed"></i>

        <ul class="drop">
            <li><a href="#">Career Starter Program</a>
            </li>
            <li><a href="#">Progress to a degree</a>
            </li>
            <li><a href="#">Career Pathways</a>
            </li>
        </ul>
    </li>
</ul>

最佳答案

您需要遍历每个面板并确保在单击元素时关闭它,关闭所有未单击元素的面板。这是你的 fiddle 更新:https://jsfiddle.net/zb2eu19g/8/

相关JS代码:

// Main Menu Slider
$('.nav-main .expand').on('click', function (e) {

    var clickedPanel = this;

    $('.nav-main .expand').each(function() {
        if (this !== clickedPanel && !$(this).hasClass('closed')) {
            $(this).addClass('closed').next('ul').slideUp(300, function () {
                $(this).removeAttr('style');
            });
        }
    });

    if ($(this).hasClass('closed')) {
        $(this).removeClass('closed').next('ul').slideDown(300);
    } else {
        $(this).addClass('closed').next('ul').slideUp(300, function () {
            $(this).removeAttr('style');
        });
    }
    e.preventDefault();
});

如果是我,我会将打开和关闭元素的逻辑提取到函数中,以消除此处的一些重复,但这给了你一个开始。

关于jQuery:一次只展开一个面板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32877290/

相关文章:

javascript - 我想为 appendChild() 设置动画,使其淡入

CSS垂直居中内联元素?

javascript - 当您将窗口调整为任意大小时,如何使缩放框的图像和文本成比例?

javascript - 创建这个水平菜单导航栏最简单的方法是什么?

html - 为什么:before element break layout?

javascript - 使用 jQuery 禁用输入不起作用

javascript - 动态加载后的jquery设计

javascript - CSS/HTML : How to make a left side div responsive that collapse when minimized the browser

javascript - 在 Javascript 中压缩 Guid

c# - Web 自定义控件并检查现有的 javascript 引用?