Во-первых, вам нужно исправить синтаксис, чтобы получить правильную структуру, чтобы ваш коллапс работал. Во-вторых, как только вы закончите append()
, вам нужно снова вызвать логику коллапса. Ниже вы найдете модифицированную версию
$('.js-data-example-ajax').select2({
ajax: {
url: '/product/api/elasticsearch',
dataType: 'json',
width: 'resolve', // need to override the changed default
minimumResultsForSearch: -1,
dropdownCssClass: 'select2-hidden',
success: function (data) {
let table = $('#js-table-sections');
table.find('tbody').remove();
if (data && Array.isArray(data.results)) {
data.results.forEach(item => {
table.append
(`<tbody class="js-table-sections-header table-active">
<tr>
<td class="text-center">
<i class="fa fa-angle-right"></i>
</td>
<td class="font-w600">${item.id}</td>
<td>
<span class="badge badge-success">VIP</span>
</td>
<td class="d-none d-sm-table-cell">
<em class="text-muted">October 28, 2017 12:16</em>
</td>
</tr>
</tbody>
<tbody>
<tr>
<td class="text-center"></td>
<td class="font-w600 text-success">+ $185,00</td>
<td class="font-size-sm">Stripe</td>
<td class="d-none d-sm-table-cell">
<span class="font-size-sm text-muted">October 19, 2017 12:16</span>
</td>
</tr>
<!-- <tr>
<td class="text-center"></td>
<td class="font-w600 text-success">+ $${item.rma}</td>
<td class="font-size-sm">Stripe</td>
<td class="d-none d-sm-table-cell">
<span class="font-size-sm text-muted">October 1, 2017 12:16</span>
</td>
</tr>
<tr>
<td class="text-center"></td>
<td class="font-w600 text-success">+ $51,00</td>
<td class="font-size-sm">Stripe</td>
<td class="d-none d-sm-table-cell">
<span class="font-size-sm text-muted">October 9, 2017 12:16</span>
</td>
</tr> -->
</tbody>`);
});
}
jQuery(".js-table-sections-header > tr").on("click.cb.helpers", function (e) {
if (!("checkbox" === e.target.type || "button" === e.target.type || "a" === e.target.tagName.toLowerCase() || jQuery(e.target).parent("a").length || jQuery(e.target).parent("button").length || jQuery(e.target).parent(".custom-control").length || jQuery(e.target).parent("label").length)) {
var a = jQuery(e.currentTarget).parent("tbody");
a.hasClass("show") || jQuery("tbody").removeClass("show table-active"),
a.toggleClass("show table-active")
}
})
}
}
});