问题解答 - 需要检查load-success.bs.table以等待表格完全加载 wait till bootstrapTable is fully loaded before doing something
我对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(通过数据格式化程序)生成的字段之一是CSS样式&{39; requestor_checkbox
'的复选框。它发生在这里,请注意将输出单个复选框的数据格式化程序;标题将包含'全部'复选框:
<th class="numeric" data-formatter="checkboxFormatter">
<input type="checkbox" name="ckbCheckAll" id="ckbCheckAll" class="btn btn-primary" value="Select all">
</th>
Data-Formatter的JS处理程序
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);