为什么我的jquery数据表创建函数不起作用?

时间:2014-06-14 10:53:39

标签: javascript jquery html datatables jquery-datatables

我正在尝试使用Datatables Rows Created Callback在绘制之前修改行中的数据。我要做的是将所有&lt;&gt;替换为'<''>',这样我就可以在每个单元格中添加换行符并在单独的行中放置文本。 '\n'linefeed不起作用。

var oTable = $('#table').DataTable( { 
      "createdRow" : function( row, data, index) {
         console.log( 'DATA WAS ' + data[0]);
         data[0] = data[0].replace(/&lt;/g,'<').replace(/&gt;/g,'>');
         console.log( 'DATA IS ' + data[0]);
       }
在控制台中

我可以看到正确修改的数据。但它实际上并没有修改表格。有没有办法做到这一点?或者是在已经绘制了行之后调用的createdRow回调?

2 个答案:

答案 0 :(得分:3)

是的,没错。只有在绘制了行之后才会调用createdRow回调。我会告诉你如何使用正确的(?)方式使用列defs来代替修复你当前的代码:D而且,我认为/希望有某些地方可以转换你的&lt;东西自动。

var oTable = $('#table').DataTable( { 
    "columnDefs": [ {
        "targets": 0,
        "render": function(data, type, row, meta) {
            html = data.replace(/&lt;/g,'<').replace(/&gt;/g,'>');
            return html;
        },
    ],
}

答案 1 :(得分:0)

将修改后的元素添加回相关的td(列)。

var oTable = $('#table').DataTable( { 
    "createdRow" : function( row, data, index) {
    console.log( 'DATA WAS ' + data[0]);
    data[0] = data[0].replace(/&lt;/g,'<').replace(/&gt;/g,'>');
    console.log( 'DATA IS ' + data[0]);
    $('td', row).eq(0).append(data[0]);
}