javascript - 如何在 onclick 后立即更改 Accordion 的图标

标签 javascript jquery html

我这里有一个简单的引导 Accordion ,它工作正常,但我需要在单击时立即更改 + 和 - 图标,现在图标只有在面板主体 div 完全展开后才会更改。我在折叠中也需要相同的东西。下面是代码。

$(document).ready(function() {
  function toggleIcon(e) {
    $(e.target).prev('.panel-heading').find(".more-less").toggleClass('glyphicon-plus glyphicon-minus');
  }
  $('.panel-group').on('hidden.bs.collapse', toggleIcon);
  $('.panel-group').on('shown.bs.collapse', toggleIcon);
});
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<div class="container demo">
  <div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true">
    <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="more-less glyphicon glyphicon-plus"></i> Collapsible Group Item #1
          </a>
        </h4>
      </div>
      <div id="collapseOne" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingOne">
        <div class="panel-body">
          Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird
          on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table,
          raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS.
        </div>
      </div>
    </div>
  </div>
</div>

最佳答案

使用 hide.bs.collapseshow.bs.collapse 事件而不是 hiddenshown 变体.

一旦触发崩溃,就会触发这些事件。请参阅此处的文档: https://getbootstrap.com/docs/4.1/components/collapse/#events

关于javascript - 如何在 onclick 后立即更改 Accordion 的图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52785322/

相关文章:

jquery - 在 jQuery 中,slideDown() 方法是否也可以向下滚动页面?

javascript - jScrollPane 不工作

jquery - jquery.cookies 是否托管在 Google CDN 上?

javascript - 有没有办法通过网页编辑本地文件而不需要运行服务器软件?

html - 在 Angular 自动完成中向右浮动在 FF 中不起作用

php - 使用 PHP smartReadFile 流式传输音频 - 不显示持续时间或在 iOS Safari 上搜索

javascript - document.getElementById 未获取新输入的 HTML 文本输入值

javascript - 为 Javascript 中数组的每个对象生成 html 中的图像标签

javascript - 点击事件功能在chrome上不起作用

javascript - 检查当前元素是偶数还是奇数