我有一个数据表,我需要做两件事:
为此,我将事件监听器附加到draw事件,然后:
2),我按照这个答案:Find and replace cells value with Datatables plugin,并使用了每个()。
var tabla=$('#list').DataTable();
tabla.on('draw.dt', function() {
var bla=tabla.column(10).data().sum();
tabla.column(9).nodes.each(function(node, index, dt) {
var ble=tabla.cell(node).data();
if (/^1970-01-01/.test(ble)) {
table.cell(node).data('');
}
});
});
问题在于,当我执行此操作时,我得到一个" tabla.column(...)。nodes.each不是函数" 。搜索周围,我发现这个错误是在jQuery或数据包尚未初始化的大部分时间引起的...但在我的情况下,它们肯定是,因为第一件事(sum()确实完成了;换句话说," bla"变量确实得到了计算。
这让我想知道你是否可以在事件触发器中使用each();否则,是什么导致了这个?
答案 0 :(得分:1)
您可以使用$.each函数迭代任意集合
但是,虽然我不确定您对该列总和的意图是什么,但我建议您为每个相关列使用render
选项。
例如,在日期列的情况下,您可以使用这样的渲染函数:
render: function (data,type,fullRow){
if(data === '1970-01-01') {
return null;
}
else {
return data;
}
}
(免责声明:未经测试!)
每次Datatables重绘表时都会调用drawCallback
函数(以及draw事件):初始加载,过滤,排序,添加新行等等。这可能有一些无法预料附带效应,或仅仅是对绩效的影响。
希望它能帮到你!