2017-03-16 133 views
0

我想弄清楚如何在數據表中創建組選擇/取消選擇。表中的每一行都標有一個組(整數),對於任何給定的選擇,它應該選擇/取消選擇具有相同組號的所有其他項目。我覺得我和下面的代碼非常接近......但是,不幸的是,當我選擇相關的行時,他們依次觸發select事件,這是一個無休止的循環,我正在玩e.preventDefault(),但那並沒有「 t似乎有幫助。任何建議,非常感謝。謝謝!DataTables組選擇/取消選擇

 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(); 

     }); 

回答

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; 
}); 
+0

謝謝!看起來很直......很難相信我沒有想到任何這些選項。 – GargantuanTezMaximus