jQuery 数据表:测试数据表插件是不是已初始化
Posted
技术标签:
【中文标题】jQuery 数据表:测试数据表插件是不是已初始化【英文标题】:jQuery datatables: test if datatables plugin is initializedjQuery 数据表:测试数据表插件是否已初始化 【发布时间】:2011-06-29 23:56:52 【问题描述】:我想检查一个带有 id="datatable" 的表元素是否是数据表初始化的。像这样的:
if ($('#datatable').dataTable().initialized)
alert("initialized!");
else
alert("not initialized!");
我该怎么做? 谢谢!
【问题讨论】:
“初始化”是什么意思? 可以说,我有几个 class="datatable" 的表。它们都是使用以下数据表初始化的: $('.datatable').dataTable();然后我用 not 数据表初始化的 class="datatable" 动态添加另一个表。现在我想用 class="datatable" 遍历所有表并根据条件做一些事情 - this 表元素是否已初始化数据表。 【参考方案1】:你可以在jQuery数据表中使用fnIsDataTable函数
var ex = document.getElementById('example');
if ( ! $.fn.DataTable.fnIsDataTable( ex ) )
$(ex).dataTable();
您可以在api找到更多信息
【讨论】:
似乎这应该是数据表的规范方式> 1.9.1 我认为这应该被标记为正确答案。 应该被标记为正确答案。非常感谢【参考方案2】:首先,在初始化数据表时添加一个特殊的类名:
$('.datatable').not('.initialized').addClass('initialized').dataTable()
现在你可以通过类名来区分它们了:
alert( $('#datatable').hasClass('initialized') )
【讨论】:
好主意。谢谢!【参考方案3】:我觉得跟随是正确的答案。
$(document).ready(function()
if (jQuery().dataTable)
// your code to do some detaul set ups
);
例如
$(document).ready(function()
if (jQuery().dataTable)
$.extend( $.fn.dataTable.defaults,
iDisplayLength : 200,
aLengthMenu : [[100, 200, 300, -1], [100, 200, 300, "All"]],
);
);
通过这种方式,您if(jQuery().<libname>)
应该能够检查是否加载了任何库。
【讨论】:
这是所有 jquery 插件的好方法。【参考方案4】:Datatable 有一个方法来检查一个元素是否已经被初始化为一个数据表 - $.fn.DataTable.fnIsDataTable
tableElement = document.getElementById('your table ID');
$.fn.DataTable.fnIsDataTable(tableElement); // returns true or false
【讨论】:
【参考方案5】:在您调用 .dataTable() 之后,它会对表进行任何使其可识别的操作吗?即它是否添加了一个“已初始化”的新类或类似的东西?如果是这样,您可以像这样遍历项目:
$('.datatable').each(
function(index, element)
var _table = $(element);
if (_table.hasClass('initialised'))
// Do stuff
else
// Do stuff
);
抱歉,如果这不是您的意思。您的问题不清楚“dataTable()”实际上是做什么的。
【讨论】:
嘿,谢谢你的重播。我忘了提到它关于 jquery 的“数据表”插件,是的,我问自己同样的问题 - 如何识别数据表初始化的表。我在数据表论坛上问了这个问题,并从艾伦那里得到了我想要的东西:datatables.net/forums/comments.php?DiscussionID=4180&page=1。还是谢谢。 frenzy引用的方法是DataTables插件作者设计的;恕我直言,这是一个非常好的解决方案。【参考方案6】:我在我的场景中使用了callback()
函数来做同样的事情。考虑将其作为替代方法分享
/* During Initialization */
var isTableInitialized = false;
$('#datatable').dataTable(/* your dataTable configurations*/,initializeDT());
/* Implement a callback function to set the value */
function initializeDT()
isTableInitialized = true;
稍后在代码中..
/* Checking for Initialization is easier*/
if(isTableInitialized)
/* Do something here */
else
/* Do something here */
【讨论】:
【参考方案7】:这对我有用。
$(document).ready(function()
if (jQuery().dataTable)
$.extend( $.fn.dataTable.defaults,
/*some default settings*/
);
$('#myDataTable').DataTable();
);
【讨论】:
以上是关于jQuery 数据表:测试数据表插件是不是已初始化的主要内容,如果未能解决你的问题,请参考以下文章
jQuery插件不起作用……“类型错误:'undefined'不是一个函数”
如何使用 Datatables Jquery 插件销毁表并使用新的更新数据重新初始化同一个表