DataTables 的 fnCreatedCell 回調在單元格創建時觸發,常用於自定義單元格渲染。本文詳細說明其五個參數含義及典型用法。
"fnCreatedCell": function(nTd, sData, oData, iRow, iCol) { ... }
| 參數 | 類型 | 含義 |
|---|---|---|
nTd | Node | 當前單元格的 DOM 元素(原生 <td>),可直接操作樣式/屬性/事件。 |
sData | String | Number | ... | 該單元格原始數據值(對應 columns.data 返回的值)。 |
oData | Object | 整行的原始數據對象(數據源中的一項),可訪問其他列的值。 |
iRow | Integer | 該單元格所在行的索引(0-based,經過排序/過濾後的顯示索引)。 |
iCol | Integer | 該單元格所在列的索引(0-based,對應 columns 定義順序)。 |
fnCreatedCell: function(nTd, sData, oData, iRow, iCol) {
if (iCol === 3) { // 假設第4列是狀態
$(nTd).css('color', sData === '失敗' ? 'red' : 'green');
}
}
fnCreatedCell: function(nTd, sData, oData, iRow, iCol) {
if (iCol === 0) { // 第一列綁定點擊
$(nTd).on('click', function() {
console.log('行數據:', oData);
console.log('行索引:', iRow);
});
}
}
fnCreatedCell: function(nTd, sData, oData, iRow, iCol) {
if (iCol === 4 && oData.status === 'urgent') {
$(nTd).addClass('highlight').attr('title', '緊急處理');
}
}
nTd 是原生 DOM,用 jQuery 包裹時用 $(nTd)。iRow 是顯示索引,若需原始數據索引,可用 table.row(iRow).index()。createdCell 選項(語法相同),fnCreatedCell 為舊版兼容寫法。initComplete 中統一處理或使用 columns.render。熟練掌握五個參數,能靈活實現單元格級的深度定制。