【问题标题】:Unexpected initialization return value when initialising Datatables inside an Object初始化对象内的数据表时出现意外的初始化返回值
【发布时间】:2011-09-05 08:01:32
【问题描述】:

我将 dataTable 函数初始化放在一个对象内,但我得到的结果与我在对象外初始化它时的结果不同

初始化外部对象

var dataTable = $('datatable').dataTable();

对象内部初始化

var aObject = {
    dataTable : null,
    initFunction : function() {
        // this.dataTable contents is not the same when I initialize dataTable outside the object
        this.dataTable = $('datatable').dataTable();
    }
}

这是为什么?

编辑:此外,在对象内部完成时,它似乎没有成功地将表初始化为 dataTables。

【问题讨论】:

  • 查看datatables函数dataTable()的源码没有返回任何东西,那么返回的值有什么不同呢?
  • 在对象外部初始化时,我得到了我初始化的表元素(在上面的例子中,“数据表”元素)。在对象内部进行初始化给了我一个大对象,其中包含“context”、“dataTableExt”、“dataTableSettings”、“jquery”等索引。
  • 您使用的是哪个版本的数据表?

标签: jquery jquery-datatables


【解决方案1】:

我用下面的代码测试过,两个console.log的结果是一样的。您确定在两个地方(对象内部和外部)都使用了正确的选择器吗?

var aObject = {
    dataTable : null,
    initFunction : function() {
        this.dataTable = $('#data').dataTable();
        }
    }

    $(function() {
        var x = $("#data").dataTable();
        aObject.initFunction();

        console.log(x);
        console.log(aObject.dataTable);
    })

和下面的html表格:

<table id="data">
    <thead>
        <tr>
            <th>Name</th>
            <th>Age</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>
                one
            </td>
            <td>
                22
            </td>
        </tr>
    </tbody>
</table>

【讨论】:

  • 我使用了 jQuery 1.6.2 和 datatables 1.8.1。
  • 有趣。我尝试了你的代码,使用我自己的表名,它可以工作。但是我的代码仍然输出不同的结果。正确的有一个索引 0 保存 DOM 元素。虽然有问题的没有它。
  • 嗯,再一次,你确定你的代码中的选择器没问题吗?因为在您的问题中您使用过:$('datatable') 不会选择任何内容,因为 datatable 不是有效的标签名称。
  • 我只是以'datatable'为例。但尽管如此,我再次查看了标记,结果发现选择器名称是问题所在。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-11
  • 2013-04-05
  • 2013-06-27
  • 2019-01-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多