我试图找出如何在数据表中创建组选择/取消选择。表中的每一行都标有一个组(整数),对于任何给定的选择,它应该选择/取消选择具有相同组号的所有其他项。我觉得我与下面的代码非常接近...但是,不幸的是,当我选择相关的行时,它们反过来触发select事件,这是一个无限循环,我正在玩e.preventDefault()但是没有'似乎有所帮助。任何建议都非常感谢。谢谢!
table.on("select", function(e, dt, type, indexes) {
var data = table.rows(indexes).data();
var group = data[0]['Group'];
table.rows(function(idx, rowData, node) {
return rowData.Group === group;
}).select();
});
答案 0 :(得分:1)
您可以在选择其他行之前分离事件处理程序,并在选择之后重新附加它,如下所示:
function onSelect(e, dt, type, indexes){
var data = dt.rows(indexes).data();
var group = data[0]['Group'];
// Detach event hanlder
dt.off('select', onSelect);
dt.rows(function(idx, rowData, node) {
return rowData.Group === group;
}).select();
// Re-attach event hanlder
dt.on('select', onSelect);
});
table.on('select', onSelect);
您还可以使用全局变量,例如:
var ignoreSelect = false;
table.on("select", function(e, dt, type, indexes) {
if(ignoreSelect){ return; }
var data = dt.rows(indexes).data();
var group = data[0]['Group'];
ignoreSelect = true;
dt.rows(function(idx, rowData, node) {
return rowData.Group === group;
}).select();
ignoreSelect = false;
});