【发布时间】:2019-08-23 22:33:51
【问题描述】:
我有需要根据手风琴状态(显示、隐藏)更改的手风琴按钮。点击事件我可以做到这一点,但我想将它绑定到手风琴的状态
我尝试在我编写的手风琴函数中添加一个事件处理程序,但我一定是做错了
var accordionBtn = $('.accordion-btn');
var bedAccordion = $('.accordion');
$(document).ready(function() {
$(bedAccordion).on('show.bs.collapse', function() {
$(this).find('i').removeClass('fa-plus');
$(this).find('i').addClass('fa-minus');
$('.collapse').collapse('hide');
});
$(bedAccordion).on('hide.bs.collapse', function() {
$(this).find('i').removeClass('fa-minus');
$(this).find('i').addClass('fa-plus');
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.9.0/css/all.min.css" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.3.1/css/bootstrap.min.css" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.3.1/js/bootstrap.min.js"></script>
<div class="accordion">
<button class="btn accordion-btn button--arrow-right" type="button" data-toggle="collapse" data-target="#bedAccordion1" aria-expanded="false" aria-controls="bedAccordion1"><i class="fas fa-plus"></i></button>
<span class="title-3">Test</span>
<div class="col collapse-content">
<div class="collapse multi-collapse" id="bedAccordion1">
<div class="border--left">
<p><b>Test</b><sup>1</sup><br> Test
</p>
<p>test<br> test
</p>
<p><b>test</b><sup>1</sup><br> Test</p>
</div>
</div>
</div>
</div>
我想将下面的这个事件绑定到上面的函数,这样更改就会在显示和隐藏折叠时发生
$(accordionBtn).click(function () {
$(this).toggleClass('accordion-btn--open');
$(this).toggleClass('button--arrow-right');
});
});
将按钮切换类绑定到手风琴的状态和上面的函数
【问题讨论】:
-
能否也分享一下HTML代码?
-
@NidhinJoseph 添加了 html..谢谢 :)
-
题外话,但你不需要做
$(bedAccordion),因为你已经把bedAccordion做成了一个jQuery对象。 -
bind the button toggle class to the state of the accordion到底是什么?? -
@NidhinJoseph 你太棒了!再次感谢!!!