【问题标题】:Datatables Jquery plugin not supporting injection?Datatables Jquery插件不支持注入?
【发布时间】:2011-11-03 22:23:07
【问题描述】:

我正在使用 jQuery ajax 调用将数据作为 html 返回到一个空标签 <table id=table01></table> 使用

$('table #table01').html(data);

表格已正确呈现并填充了数据,但是当我想使用列标题对列进行排序时,我收到一条错误消息表格中没有可用数据

我是不是做错了什么,或者 jQuery 的 DataTables 插件不适用于注入的 html。

谢谢

【问题讨论】:

  • 不应该是$('table#table01').html(data);(选择器中没有空格)吗?
  • Clive,这不会影响问题,因为数据已正确加载。

标签: jquery jquery-plugins datatables


【解决方案1】:

如果您想在表初始化后向表中添加数据,您需要使用 API:http://datatables.net/api#fnAddData。这允许 DataTables 查看您正在添加的内容并相应地处理它。直接注入 HTML 是行不通的,因为 DataTables 不知道这已经发生了 - 因此它试图在重绘时将它知道的内容放在适当的位置(在这种情况下没有数据)。

另一种方法是在您进行 HTML 注入后初始化表格(可能按照 olivieradam666 的建议销毁表格)。

艾伦

【讨论】:

    【解决方案2】:

    我知道你不会注入 html。这当然不是使用插件的预期方式,因为它基本上违背了目的。它说“没有数据”,因为您实际上没有给插件提供任何数据来存储在某处的缓存中,并且能够进行排序、分页等。您所做的只是将 html 附加到 table 标签(而不是 datatable )。如果您使用 datatables 的内置 ajax 功能,您只需将表中所需的数据作为 json (或其他格式,如果您提供解析)返回,datatables 会自动将其转换为用于显示的 dom 对象和用于排序的 jquery 对象和这样的。

    这也让你的生活更轻松。

    附:当您使用插件的 ajax 功能时,它实际上将您的表格包装在一堆 div 中并向其添加许多元素,因此您单击的标题在技术上与您声明的表格无关html 如果这有意义吗?它与数据表用来为您呈现表的对象缓存相关联。

    这里是一个如何使用 ajax 和 dt 的例子 http://datatables.net/release-datatables/examples/data_sources/ajax.html

    【讨论】:

      【解决方案3】:

      最可能的答案是你在搞乱插件内部。如果您的库为内容提供了 setter 方法,请使用它。如果不是,我认为更安全的方法是销毁您的表,用您的数据填充一个新表,然后在其上重新实例化数据表小部件。

      【讨论】:

        猜你喜欢
        • 2011-01-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-09
        • 2014-07-01
        • 1970-01-01
        相关资源
        最近更新 更多