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 工具提示是不是已初始化

jQuery插件不起作用……“类型错误:'undefined'不是一个函数”

如何确定 jQuery 是不是已完全初始化?

如何使用 Datatables Jquery 插件销毁表并使用新的更新数据重新初始化同一个表

带有 Moment.js 的 Jquery 数据表的终极日期/时间排序插件

city-picker插件使用-移动h5三级联动