【问题标题】:Why is my jquery datatables createdrow function not working?为什么我的 jquery 数据表 createdrow 函数不起作用?
【发布时间】:2014-06-14 10:53:39
【问题描述】:

我正在尝试使用 Datatables Rows Created Callback 在绘制之前修改行中的数据。我要做的是将所有<> 替换为'<''>',这样我就可以在每个单元格中放置一个换行符并将文本放在单独的行上。 '\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 回调?

【问题讨论】:

    标签: javascript jquery html datatables jquery-datatables


    【解决方案1】:

    是的,没错。 createdRow 回调仅在已绘制行后调用。我不会修复您当前的代码,而是通过使用列 defs 向您展示如何使用正确的 (?) 方式进行操作:D 另外,我认为/希望有什么地方可以自动转换您的 &amp;lt; 内容。

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

    【讨论】:

    • 我认为您的答案中有错字(那个方括号)。
    【解决方案2】:

    将修改后的元素添加回有问题的 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]);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-21
      • 2021-12-18
      • 2011-06-23
      • 1970-01-01
      • 2017-08-18
      • 2010-10-18
      相关资源
      最近更新 更多