Я реализую Bootstrap 3.3.7 Collapse (аккордеон). Я скопировал пример здесь .
Я изменил часть заголовка панели, добавив каретку и переместив текст из привязки так, чтобы клик мог нажимать только тот каркас, который отвечал бы на событие свертывания:
<h4 class="panel-title">
<a class="collapsed" role="button" data-toggle="collapse" data-parent="#sub-role-1_sub-role-1-accordion" href="#collapse-sub-role-1_sub-role-1" aria-expanded="true" aria-controls="collapse-sub-role-1_sub-role-1">
<span class="caret caret-mr"></span>
</a>Sub Role 1
</h4>
Я также добавил пользовательские JS и CSS, чтобы каретка поднималась (выпадала) при нажатии, чтобы свернуть:
var collapseList = $('.panel .panel-collapse');
collapseList.each(function() {
var collapseId = $(this).attr('id');
$('#' + collapseId).on('show.bs.collapse', function() {
$(this).prev('.panel-heading').find('.panel-title > a').addClass('dropup');
}).on('hide.bs.collapse', function() {
$(this).prev('.panel-heading').find('.panel-title > a').removeClass('dropup');
});
});
.panel .panel-heading>.panel-title>a>span.caret {
border-top: 6px solid black;
}
.panel .panel-heading>.panel-title>a.dropup>span.caret {
border-bottom: 6px solid black;
border-top: none;
}
Я изменил все идентификаторы и все остальные атрибуты данных, чтобы избежать конфликтов.
Это прекрасно работает, за исключением вложенного аккордеона (аккордеона внутри тела аккордеона). В настоящее время у меня есть три уровня вложенных аккордеонов. Проблема в том, что вложенный аккордеон влияет и на родителя вплоть до корневого аккордеона - их каретки также выпадают или выпадают. Второй аккордеон (вложенный) влияет на первое, третий - на второе и первое.
Полные коды: GitHub Gist
Спасибо за помощь.