ОТВЕТ НА ВОПРОС ЗДЕСЬ. Необходимо проверить, что load-success.bs.table ожидает полной загрузки таблицы подождите, пока bootstrapTable полностью загрузится, прежде чем что-то делать
У меня странная проблема с Bootstrap-Table. Я визуализирую это следующим образом, а затем мне нужно прикрепить некоторые обработчики jQuery к сгенерированным полям.
function createTable(){
$('#myTable').bootstrapTable('refresh', {
url: 'loadRequests'
});
// After the construction of the Bootstrap-Table, the dynamically-rendered fields (e.g. checkboxes) are now available
// Attach a handler to de-select the 'All' checkbox at the top if an individual checkbox is unchecked
$('.requestor_checkbox').on('click', function(e) {
if (!$(this).is(':checked')) {
//de-select the All checkbox at the top
$('#ckbCheckAll').prop('checked', false);
}
});
}
Одно из полей, сгенерированных Bootstrap-Table (через Data-Formatter), представляет собой флажки со стилем CSS «requestor_checkbox
». Это происходит здесь, обратите внимание на форматировщик данных, который выводит отдельные флажки; и заголовок будет иметь флажок «Все»:
<th class="numeric" data-formatter="checkboxFormatter">
<input type="checkbox" name="ckbCheckAll" id="ckbCheckAll" class="btn btn-primary" value="Select all">
</th>
JS-обработчик для Data-Formatter
function checkboxFormatter(id, row, index) {
return '<input type="checkbox" class="requestor_checkbox checkBoxClass" value="' + row.id + '">';
}
Как вы можете видеть в верхней части кода, мне нужно прикрепить обработчик событий jQuery к только что сгенерированным флажкам. Странно, есть задержка, а галочки не найдены.
Но если я настрою связыватель событий на выполнение через 1 секунду после тайм-аута, это сработает. Работает следующее:
// 1. Render Bootstrap-Table
$('#myTable').bootstrapTable('refresh', {
url: 'loaRequests?requestId=' + requestId
});
// 2. 1-SEC DELAY: After the construction of the Bootstrap-Table, the dynamically-rendered fields (e.g. checkboxes) are now available
// Attach a handler to de-select the 'All' checkbox at the top if an individual checkbox is unchecked
setTimeout(function (){
$('.requestor_checkbox').on('click', function(e) {
if (!$(this).is(':checked')) {
//de-select the All checkbox at the top
$('#ckbCheckAll').prop('checked', false);
}
});
}, 1000);