【问题标题】:Resetting Bootstrap Panel Heading after closing Panel关闭面板后重置引导面板标题
【发布时间】:2016-12-08 00:52:26
【问题描述】:

我正在引导程序中创建一个手风琴。我将其设置为在单击打开我想要的面板时更改面板标题和字形图标。此外,当我单击另一个面板时,前一个面板将重置为关闭状态。

但是,我遇到的问题是,如果我单击打开后关闭的同一个面板,样式会显示为“打开”状态like so.

我可以做些什么来确保如果我单击一个关闭的面板,它会重置为关闭状态?下面是我正在使用的 JQuery 代码。

$('.panel-clr').click(function () {
    $(this).addClass('on');
    $(this).find('span').removeClass('glyphicon-chevron-right');
    $(this).find('span').addClass('glyphicon-chevron-down');
});

$('.panel-clr').click(function () {
    $('.panel-clr').not(this).removeClass('on');    
    $('.panel-clr').not(this).find('span').removeClass('glyphicon-chevron-down');
    $('.panel-clr').not(this).find('span').addClass('glyphicon-chevron-right');
});

具体区域的CSS如下:

.panel-clr.on {
background-color: #9D1E3A;
color: white; }

Bootstrap 是很好的衡量标准:

   <div class="panel-group" id="accordion">
    <div class="panel panel-default">
        <div class="panel-heading alternate panel-clr" data-toggle="collapse" data-parent="#accordion" data-target="#collapse1">
            <h4 class="panel-title">
                <span class="glyphicon glyphicon-chevron-right"></span>
                <a data-toggle="collapse" data-parent="#accordion" href="#collapse1">
                    Collapsible Group 1
                </a>
            </h4>
        </div>
        <div id="collapse1" class="panel-collapse collapse">
            <div class="panel-body">
                Lorem ipsum dolor sit amet, consectetur adipisicing elit,
                sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
                minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
                commodo consequat.
            </div>
        </div>
    </div>
  </div>

更新:我尝试了 CSS 转换方法,但似乎没有任何效果。

【问题讨论】:

  • 你试过 toggleClass() 吗?那你就不需要用 not() 重复同样的功能了
  • toggleClass 一次性改变它们
  • 你不必为此使用 JS。看看我在上面那个帖子中的回答。只需使用折叠的类来确定您的面板是否打开并为您的 CSS 添加适当的样式。
  • @makshh 我正在尝试使用您的方法,但似乎没有任何效果。

标签: jquery css twitter-bootstrap


【解决方案1】:

这是一个使用 jQuery 的解决方案。您不需要按钮的两个单击事件处理程序,因此您可以删除第二个事件处理程序。

$('.panel-clr').click(function () {
    var panel = $(this);
    panel.toggleClass('on');
    var icon = panel.find('span').first();
    icon.toggleClass('glyphicon-chevron-right').toggleClass('glyphicon-chevron-down');
    panel.siblings().removeClass('on');
    panel.siblings().find('span').removeClass('glyphicon-chevron-down').addClass('glyphicon-chevron-right');
});

jsFiddle
https://jsfiddle.net/Lwvtz1r3/

【讨论】:

  • 它有点工作,但现在它让一切都变红了。如果我单击不同的面板,则会翻转箭头。我想出了一些可行的方法,如下所示,尽管它不会改变我想要的颜色:function toggleChevron(e) { $(e.target) .prev('.panel-clr') .find('span') .toggleClass('glyphicon-chevron-right glyphicon-chevron-down'); } $('#accordion').on('hidden.bs.collapse', toggleChevron); $('#accordion').on('shown.bs.collapse', toggleChevron);
  • @M.Straw 尝试我添加的链接并告诉我问题所在。我并没有真正关注你正在尝试做的事情。
  • 好的!我的 CSS 中有一些东西导致了冲突!
  • @M.Straw 很高兴我能帮上忙!
猜你喜欢
  • 1970-01-01
  • 2017-01-05
  • 2014-06-06
  • 2018-04-24
  • 2011-05-08
  • 2014-10-11
  • 2014-09-26
  • 2015-05-08
相关资源
最近更新 更多