У меня есть интерфейс с многократно вложенными друг в друга коллапсами, выглядит это примерно так:
index.php
Код: Выделить всё
<?= Collapse::widget([
'items' => [
[
'label' => 'Collapse1',
'content' => $this->render('1'),
],
[
'label' => 'Collapse2',
'content' => $this->render('2'),
],
[
'label' => 'Collapse3',
'content' => $this->render('3'),
],
]
]); ?>
Код: Выделить всё
<?= Collapse::widget([
'items' => [
[
'label' => 'Collapse1',
'content' => $this->render('1_1'),
],
[
'label' => 'Collapse2',
'content' => $this->render('1_2'),
],
[
'label' => 'Collapse3',
'content' => $this->render('1_3'),
],
]
]); ?>
Код: Выделить всё
$('.collapse').on('shown.bs.collapse', function () {
console.log(this);
});
Как я выяснил, это происходит по следующим причинам:
в методе run вызывается метод описаный в BootstrapWidgetTrait registerPlugin. В результате работы этого метода в тело HTML документа добавляется inline-скрипт следующего вида:
, что и порождает нежелательные события.
Из-за данной проблемы, мой js-код может корректно работать с коллапсами только в том случае если я помещаю его в конец данного inline-скрипта. Я не уверен правильное ли это поведение виджета, но в любом случае, самопроизвольное срабатывание событий `shown.bs.collapse` выглядит некорректно.
Есть идеи решения проблемы?