两个数据表在一个页面中-第二个初始化奇怪

Two DataTable in One Page - Second one initialising weird

本文关键字:第二个 初始化 一个 两个 数据表      更新时间:2023-09-26

我有两个dataTable在我的页面,我有一个方法如下:

function ToDataTable()
{
    $(".dataTable").css("width", "100%");
    $(".dataTable").each(function ()
    {
        var $that = $(this);
        /* Start of method */
        function ToDataTableInternal()
        {
           var table = $that.DataTable({
               responsive: {
                   details: { type: "column", target: -1 },
               },
               columnDefs: [{
                       className: "control", orderable: !1, targets: -1,
                   },
                   { orderable: !1 }],
               "paging": false,
               "ordering": false,
               "info": false,
               "searching": false,
                retrieve: true
           });
        }
        /* End of method */
        if ($that.is(":visible"))
        {
            ToDataTableInternal()
        }
        else
        {
            // Observe all invisible parents or table to trigger
            // ToDataTableInternal method if made visible
            var $arr = $(this).parentsUntil(":visible").filter(function ()
            {
                return $(this).css("display") === "none";
            }).add($(this));
            var observers = [];
            $arr.each(function ()
            {
                var observer = new MutationObserver(function (mutations)
                {
                    mutations.forEach(function (mutation)
                    {
                        if ((mutation.attributeName === 'style' ||
                               mutation.attributeName === 'class') && 
                                 $that.is(":visible"))
                        {
                            ToDataTableInternal();
                            for (var i = 0; i < observers.length; i++)
                            {
                                // Disconnect observers
                                observers[i].disconnect();
                            }
                        }
                    });
                });
                observers.push(observer);
                observer.observe(this, {
                    attributes: true
                });
            });
        }
    });
}

我有这个方法的原因是,当表的显示是none,它真的滞后浏览器(特别是IE,我不能做任何事情至少5秒),这是我改变表为DataTable后,它使可见的原因。

但是单独调用方法的问题是第二个DataTable没有我传递的相同设置。(第一个有)相反,第二个也有过滤器,分页,排序元素。

如果我同时调用两者,不会发生任何异常情况。有什么问题吗?

编辑:我不能复制相同的行为在小提琴。

当我尝试做同样的事情时,在另一个环境中似乎没有问题。

我们使用的另一个库出现了问题,而DataTable库没有问题。

您可以在您的数据表配置中添加以下属性来删除过滤,分页和排序:

Datatable 1.9

  • "bPaginate":false,//启用或禁用分页
  • "bFilter": false,//启用或禁用数据过滤
  • "bLengthChange": false,//启用或禁用尺寸下拉菜单
  • "bSort": false,//启用或禁用列排序
  • "bInfo": false,//开启或关闭表信息显示

Datatable 1.10

在datatable 1.10中更新选项名

  • bPaginate ->分页
  • bFilter ->搜索
  • lengthChange -> lengthChange
  • bSort ->排序
  • bInfo -> info