如何在使用 jQuery 创建表后初始化数据表.js加载函数

How do I initialize DataTables.js' load function AFTER creating the table with jQuery?

本文关键字:初始化 数据表 js 函数 加载 创建 jQuery      更新时间:2023-09-26

我正在使用ajax创建一个表。该表显示正确,并且是有效的 html,但我无法正确初始化数据表。

我有这个 html 代码:

<table class="dat">

在我的 ajax 中:

complete: $('.dat').DataTable(),

该表根据 DataTables.js 的表准则进行格式化:

<table class="dat">
    <thead>
        <tr>
            <th>Logo</th>
            <th>Food Name</th>
            <th>Stuff</th>
            <th>Code</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>Image</td>
            <td>Stuff here</td>
            <td>Description</td>
            <td>Code</td>
        </tr>
    </tbody>
</table>

以及jquery AJAX的一部分:

success: function (z) {
    var json = $.parseJSON(z.d);
    var table = '<table class="dat">';
    table += "  <thead>";
    table += "      <tr>;"
    table += "          <th>Logo</th>";
    table += "          <th>Food Name</th>";
    table += "          <th>Stuff</th>";
    table += "          <th>Code</th>";
    table += "     </tr>";
    table += " </thead>";
    $.each(json, function (i, obj) {
        //console.log(obj);
        table += "  <tbody>";
        table += "      <tr>";
        table += "          <td> Image (" + obj.Logo + ")</td>";
        table += "          <td>" + obj.FoodName + "</td>";
        table += "          <td>";
        $.each(obj.Text, function (j, t) {
            table += t + "; ";
        });
        table += "          </td>"; // Stuff
        table += "          <td>" + obj.Code + "</td>";
        table += "      </tr>";
    });
    table += "  </tbody>";
    table += "</table>";
    $('.search_results').append(table);
    $('.dat').DataTable();
},

html 正确显示,没有任何格式问题,也没有错误。我唯一能做的就是使用搜索功能,它不会清除不相关的内容。是否在追加功能之前调用 DataTable()?这就是我的怀疑,但搜索功能几乎完美运行。

如果是这样,在表加载完成后如何调用它?如果不是,我做错了什么?

提前感谢!

首先尝试删除任何先前的侦听器,以便 DataTable 可能已经附加到表(特别是因为您是通过类而不是 ID 来标识它)。 然后,初始化表。

所以,替换这个...

$('.dat').DataTable();

有了这个...

$('.dat').DataTable().destroy();
$('.dat').DataTable();