И чтобы помочь новым читателям, другая причина может быть ошибкой в файле манифеста. Я ошибся android:service
как android.service
и столкнулся с той же ошибкой ...
Вы можете создать обработчик для события коллапса show
, которое происходит непосредственно перед отображением каких-либо панелей.
Добавьте это, чтобы все остальные открытые панели были закрыты до того, как будет показана выбранная панель:
$('#accordion').on('show.bs.collapse', function () {
$('#accordion .in').collapse('hide');
});
Вы можете прочитать больше о collapse
события здесь: http://getbootstrap.com/javascript/#collapse
Я думаю, что проблема связана с тем, как вы меняете открытую панель. Вместо того, чтобы использовать функцию 'show', вам нужно запустить событие click на соответствующей ссылке панели. Например, с аккордеоном с идентификатором «аккордеон», с тремя панелями, если вы хотите показать 2 панели, используйте:
$("a[href=#accordion-2]").click()
Или любой другой идентификатор, который вы дали своей второй панели (я использую twitterboostrapmvc так идентификаторы панели автоматически генерируются из идентификатора аккордеона).
Для любого, кто использует атрибуты data-target
для управления аккордеоном (а не атрибут href
), это адаптация ответа ProfNimrod, который щелкает по соответствующему элементу, если цель в данный момент скрыта. (Обратите внимание, что проверка if
основывается на настройке аккордеона с классом collapsed
, применяемым по умолчанию, что я считаю полезным в любом случае использовать преимущество с помощью css для установки значка шеврона на аккордеонах ) .
var expandAccordion = function() {
var header = $('[data-target="#accordion-0"]');
if (header.hasClass('collapsed')) {
header.click();
}
}