我們在使用layui表格的時候,會使用到layui表格的分頁,即一頁獲取多少條數據,這些都是通過后台接口來獲取的數據,要想實現所有頁全選理論上是不可能的,因為后面的數據也是通過后台獲取的,所以我們只能使用取巧的方法來實現所有頁全選
第一步:表格生成時,定義全局變量來存儲每次請求的所有數據(即當前頁數據),我這里通過idsAll來存儲所有:
第二步,自定義復選框按鈕來實現全選功能:
$("#selectAllPagesCheck").change(function () {//自定義復選框變化 if ($('#selectAllPagesCheck')[0].checked) {//判斷是全選還是全取消 for (var j = 0; j < idsAll.length; j++) { idsAll[j]["LAY_CHECKED"] = 'true'; var index = idsAll[j]['LAY_TABLE_INDEX']; //如果你的頁面還有第二個表格,就是.list2 $('#resourceQueryResultDiv .layui-table-fixed-l tr[data-index=' + index + '] input[type="checkbox"]').prop('checked', true);//jquery里id為鎖定生成表格的范圍,防止多表相互影響 $('#resourceQueryResultDiv .layui-table-fixed-l tr[data-index=' + index + '] input[type="checkbox"]').next().addClass( 'layui-form-checked'); } // 獲取表格勾選狀態,全選中時設置全選框選中 let checkStatus = table.checkStatus('resourceQueryTable');//此處是為了當全選后,需要讓layui表格自帶的當前頁全選的狀態也選中或者取消 if (checkStatus.isAll) { $('#resourceQueryResultDiv .layui-table-header th[data-field="0"] input[type="checkbox"]').prop('checked', true); $('#resourceQueryResultDiv .layui-table-header th[data-field="0"] input[type="checkbox"]').next().addClass( 'layui-form-checked'); } qualityjson.allPage = true; } else { for (var j = 0; j < idsAll.length; j++) { idsAll[j]["LAY_CHECKED"] = 'false'; var index = idsAll[j]['LAY_TABLE_INDEX']; //如果你的頁面還有第二個表格,就是.list2 $('#resourceQueryResultDiv .layui-table-fixed-l tr[data-index=' + index + '] input[type="checkbox"]').prop('checked', false); $('#resourceQueryResultDiv .layui-table-fixed-l tr[data-index=' + index + '] input[type="checkbox"]').next().removeClass( 'layui-form-checked'); } // 獲取表格勾選狀態,全選中時設置全選框選中 let checkStatus = table.checkStatus('resourceQueryTable'); debugger; if (checkStatus.isAll) { $('#resourceQueryResultDiv .layui-table-header th[data-field="0"] input[type="checkbox"]').prop('checked', false); $('#resourceQueryResultDiv .layui-table-header th[data-field="0"] input[type="checkbox"]').next().removeClass( 'layui-form-checked'); } } })
第三步:當表格生成后,在done回調里進行表格復選框的選中
var len = res.data.length;//當前頁面數據長度 var chooseNum = 0; //記錄當前頁選中的數據行數 if ($('#selectAllPagesCheck')[0].checked) {//每次換頁后判斷是否全選,全選的話就讓復選框全選中 for (var i = 0; i < res.data.length; i++) { for (var j = 0; j < idsAll.length; j++) { if (res.data[i].gid == idsAll[j].gid) { res.data[i]["LAY_CHECKED"] = 'true'; var index = res.data[i]['LAY_TABLE_INDEX']; //如果你的頁面還有第二個表格,就是.list2 $('#resourceQueryResultDiv .layui-table-fixed-l tr[data-index=' + index + '] input[type="checkbox"]').prop('checked', true); $('#resourceQueryResultDiv .layui-table-fixed-l tr[data-index=' + index + '] input[type="checkbox"]').next().addClass( 'layui-form-checked'); chooseNum++; } } } } else { for (var i = 0; i < res.data.length; i++) { for (var j = 0; j < ids.length; j++) {//ids是全局寫的單個選中數據的保存 if (res.data[i].gid == ids[j].gid) { res.data[i]["LAY_CHECKED"] = 'true'; var index = res.data[i]['LAY_TABLE_INDEX']; //如果你的頁面還有第二個表格,就是.list2 $('#resourceQueryResultDiv .layui-table-fixed-l tr[data-index=' + index + '] input[type="checkbox"]').prop('checked', true); $('#resourceQueryResultDiv .layui-table-fixed-l tr[data-index=' + index + '] input[type="checkbox"]').next().addClass( 'layui-form-checked'); chooseNum++; } } } } // 獲取表格勾選狀態,全選中時設置全選框選中 let checkStatus = table.checkStatus('resourceQueryTable'); if (checkStatus.isAll) { $('#resourceQueryResultDiv .layui-table-header th[data-field="0"] input[type="checkbox"]').prop('checked', true); $('#resourceQueryResultDiv .layui-table-header th[data-field="0"] input[type="checkbox"]').next().addClass( 'layui-form-checked'); }
以上就可以實現所有頁全選,若有不懂可以評論留言