//單擊事件
table.on('row(test)', function (obj) {
//判斷是否被選中
if (obj.tr.find('.layui-form-checkbox').hasClass('layui-form-checked')) {
//設置為未選中的樣式
obj.tr.find('.layui-form-checkbox').removeClass('layui-form-checked');
}
else {
//設置為選中的樣式
obj.tr.find('.layui-form-checkbox').addClass('layui-form-checked');
}
//var checkStatus = table.checkStatus('test');
});
這個方式,只是為checkbox添加樣式,通過 table.checkStatus('ifrTbl'); 檢查並不能獲取勾選數據。
//單擊行勾選checkbox事件
$(document).on("click", ".layui-table-body table.layui-table tbody tr", function () {
var index = $(this).attr('data-index');
var tableBox = $(this).parents('.layui-table-box');
//存在固定列
var tableDiv;
if (tableBox.find(".layui-table-fixed.layui-table-fixed-l").length > 0) {
tableDiv = tableBox.find(".layui-table-fixed.layui-table-fixed-l");
} else {
tableDiv = tableBox.find(".layui-table-body.layui-table-main");
}
var checkCell = tableDiv.find("tr[data-index=" + index + "]").find("td div.laytable-cell-checkbox div.layui-form-checkbox I");
if (checkCell.length > 0) {
checkCell.click();
}
});
//對td的單擊事件進行攔截停止,防止事件冒泡
$(document).on("click", "td div.laytable-cell-checkbox div.layui-form-checkbox", function (e) {
e.stopPropagation();
});
以上方式實現原理:找到table的div綁定單擊事件到表格的行:
1、取得行的索引data-index,為后面查找checkbox的控件作准備
2、根據是否有固定列查找checkbox所在的表格table(當存在固定列時,固定列是另一個table,checkbox控件就在這上面,因此要優先取這個)
3、通過table和data-index查找checkbox控件”td div.laytable-cell-checkbox div.layui-form-checkbox I”,如果存在,則執行單擊
4、對td的單擊事件進行攔截停止,防止事件冒泡再次觸發上述的單擊事件5、將此代碼在頁面初始化后執行一次即可以。
實現效果:單擊行,自動選中或取消勾選。
通過 table.checkStatus('ifrTbl'); 檢查可以獲取已勾選數據。
參考來源:
https://blog.csdn.net/weixin_44560342/article/details/106946520
https://www.jb51.net/article/145596.htm