jquery - 构建自举 Accordion 并想向整个面板添加一个类

标签 jquery html twitter-bootstrap accordion bootstrap-accordion

我正在构建一个自举 Accordion ,当我打开一个面板时,我想在打开时将样式应用于整个面板,然后在关闭时将其删除。我正在使用 CSS 和 jQuery。我在尝试这样做时遇到了一些问题;它将类添加到每个面板,它根本不应用类等等。我必须承认我不是最擅长 jquery 的,但有人可以帮忙吗。 谢谢

这是 html:

    <div class="panel panel-default">
        <div class="panel-heading" role="tab" id="headingOne">
            <h4 class="panel-title">
                <a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseOne" aria-expanded="true" aria-controls="collapseOne">
                    <i class="fa fa-chevron-down fa-lg"></i>
                    Stuff 1
                </a>
            </h4>
        </div>
        <div id="collapseOne" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingOne">
            <div class="panel-body text-muted">
                  Stuff.
            </div>
        </div>
    </div>

    <div class="panel panel-default">
        <div class="panel-heading text-muted" role="tab" id="headingTwo">
            <h4 class="panel-title">
                <a class="collapsed" role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseTwo" aria-expanded="false" aria-controls="collapseTwo">
                    <i class="fa fa-chevron-down fa-lg"></i>
                    Stuff 2
                </a>
            </h4>
        </div>
        <div id="collapseTwo" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingTwo">
            <div class="panel-body text-muted">
                Stuff.
            </div>
        </div>
    </div>

这是 jquery:

$(document).ready(function(){
 $(".panel-heading").click(function(){
     $(".panel-default").toggleClass("panel-box-shadow");
 });
});

最佳答案

您可以使用 Bootstrap collapse events :

//adds the class
$('.panel-collapse').on('shown.bs.collapse', function () {
  $(this).parent().addClass('panel-box-shadow');
});

//removes the class
$('.panel-collapse').on('hidden.bs.collapse', function () {
  $(this).parent().removeClass('panel-box-shadow');
});

$(this) 在此上下文中是您的 .panel-collapse div,它正在折叠。如果您在此元素上使用 parent(),您将获得您的 .panel,然后您可以在适当的事件发生时从该面板添加或删除类。

如果需要,您还可以使用显示和隐藏事件(而不是显示和隐藏)。

当您使用clickmouseover 等事件时,此事件中的$(this) 将始终指代点击/悬停等。元素。您可以在函数中使用 $(this).parent() 而不是 $(".panel-default") 但问题是当您双击在您的 .panel-heading 上,它会切换 panel-box-shadow 类,但您的可折叠 div 将打开,因此最好使用 Bootstrap 内置事件。

关于jquery - 构建自举 Accordion 并想向整个面板添加一个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43963280/

相关文章:

javascript - 为具有平滑颜色过渡的滚动云添加昼夜循环

javascript - 按钮背景颜色更改

javascript - 按属性和链接文本对 div 中包含的链接进行排序

html - 如何在html中将文字放在图像上?

javascript - 按 ID 显示/隐藏元素

javascript - 从同一页面获取特定类字段内容(Javascript 或 PHP)

javascript - 多个复选框 > 至少应显示一条必填项,否则会显示错误消息

css - 没有行的 Bootstrap ?

css - Inputfield 正在突破其列(流体容器和行)

javascript - 模式不显示,但单击按钮时出现灰色背景