有没有办法找到页面中的表格是dataTable对象?
Posted
技术标签:
【中文标题】有没有办法找到页面中的表格是dataTable对象?【英文标题】:Is there a way to find that a table in page is a dataTable object? 【发布时间】:2012-02-14 14:24:00 【问题描述】:我正在寻找一种方法来了解页面中的表格是否为 dataTable?有没有简单的方法可以找到它?或者如果我可以获得dataTable的所有对象。
【问题讨论】:
【参考方案1】:DataTables 插件中有一个静态方法,所以你可以验证为:
$('table').each(function()
// this method accepts the DOM node (table element) as parameter
if ( $.fn.dataTable.fnIsDataTable(this) )
// do your thing to the table
);
【讨论】:
【参考方案2】:可以一举获得页面上所有属于DataTables的表格。 DataTables 1.10 的代码是:
$.fn.dataTable.tables()
这是doc。这将返回一个 DOM 元素 数组。如果你想获取与之关联的 DataTable API 实例,你可以这样做:
var tables = $.fn.dataTable.tables();
var datatables = $(tables).DataTable();
请注意,尽管像上面那样调用.DataTable()
可以创建一个新的DataTable API 实例并因此初始化您的表,如果调用该方法的DOM 元素已经 有自己的实例(API 已经创建并初始化),调用将不会创建新实例。换句话说,上面的代码不会重新初始化你的表。
这里的datatables
对象是一个API 实例,用于控制整个表集合。在此实例上调用 API 函数将一次控制所有表。改编自文档中的示例,此代码:
datatables.page('next').draw(false);
将使所有表格跳转到它们的下一页(如果存在)。
在 1.10 之前的版本中,等效函数为 $.fn.dataTable.fnTables
。
Roy Ling 提到$.fn.dataTable.fnIsDataTable
可以用来单独测试表。当然,在 1.10 中仍然可以在需要的时候单独测试表,函数是$.fn.dataTable.isDataTable
。
【讨论】:
【参考方案3】:if($('table').parents('.dataTable_wrapper').length>= 1)
do something...
这有点小技巧,但还没有一种本地方法来检查数据表实例。这是我昨天碰巧学到的。
【讨论】:
这种破解方法可行,但我正在寻找更强大的解决方案。 该解决方案来自数据表论坛上的这个线程,datatables.net/forums/discussion/7748/…,答案来自数据表的创建者本人,所以不幸的是,我认为没有很多其他方法可以完成它。 我实际上是在寻找 dataTable 对象,以便可以在其上调用一些函数。 感谢您的解决方案。但我认为目前没有办法找到它。 @Roy Ling 的回答中提到,添加了一个新的静态 API。应该使用这个 API。【参考方案4】:我知道这个问题发布可能已经有一段时间了,但是当我自己问同样的问题时,我从 DataTable 参考site 找到了这个解决方案。
以下是检查#example 是否为DataTable 的方法。如果没有,初始化:
if ( ! $.fn.DataTable.isDataTable( '#example' ) )
$('#example').dataTable();
希望这对某人有所帮助!
【讨论】:
以上是关于有没有办法找到页面中的表格是dataTable对象?的主要内容,如果未能解决你的问题,请参考以下文章
第二次渲染后表格列宽发生变化 - JQuery DataTables