在 ajax 调用后尝试调整 table 大小时,Footable 触发器不起作用

Footable triggers not working when trying to resize table after ajax call

我在我正在创建的整个网站中使用 footable tables 直到现在它主要是一帆风顺但是我在将服务器端分页添加到 table。基本上我通过 ajax 调用获取数据,当页面首次加载时一切正常 footable 被正确初始化并且列在移动视图中折叠,但是当我按下下一页按钮时新数据已添加到 table,但在移动视图中,列不会折叠。见下图:

为了清楚起见,此网页上有多个 footable table,上面的 table 使用 jquery.responsiveTabs 在选项卡控件中实现插入。如果我最大化然后最小化浏览器 footable 断点被添加到新行并且列折叠。

将新行添加到 table 时,我使用的是高级演示功能 here

中提供的 ajax 演示

我对ajax请求的实现如下:

$.ajax({
    url: '/myurl/getdata/',
    success : function(data) {
        $('#despatchTbl tbody').append(data).trigger('footable_redraw');
    }
});

这与 footable 文档中的代码相同,除了通过 ID 而不是元素来引用 table。我还尝试了其他 footable 触发器,例如 footable_resize、footable_initialize 和我添加的一个新触发器来解决交换选项卡 footable_force_resize 时的类似问题,但没有运气怎么办永远,控制台也没有错误。

我的脚本按以下顺序声明:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js" type="text/javascript"></script>
<script src="/scripts/footable.js" type="text/javascript"></script>
<script src="/scripts/jquery.responsiveTabs.js" type="text/javascript"></script>
<script type="text/javascript" src="/scripts/ajaxlibs.js"></script>

在脚本声明的正下方,我正在初始化 footable,如下所示:

<script language="javascript">
    $(function() {
       $('.footable').footable()
    }); 
</script>

我还尝试了以下已成功添加到选项卡激活事件中的方法,每次更改选项卡时都会触发。

var table = $('.footable').footable();
table.trigger('footable_resize');

然而,当我在页面初始化后 ajax 调用后 运行 执行此操作时,我在控制台中收到以下错误。

typeerror $(...).footable 不是函数

我现在已经束手无策了,我真的不想在这个后期放弃 footable 并找到替代方案。我在这里浏览了各种问题,google 和 none 找到了我的问题的解决方案,因此非常感谢任何帮助!!!

没有看到 table 本身的标记,很难完全确定问题所在,但我会解决我看到的问题。

我从未使用过 responsiveTabs,但我快速浏览了一下文档。更改选项卡时,您需要使用 responsiveTabs 插件的激活回调来调整 footable 的大小,如下所示:

$("#tabs").responsiveTabs({
    rotate: false,
    startCollapsed: 'accordion',
    collapsible: 'accordion',
    activate: function(e, tab) {
      $('.footable').trigger('footable_resize');
    }
});

这是将数据添加到现有 footable 的正确方法,我以您的 ajax 成功处理程序为例:

$.ajax({
    url: '/myurl/getdata/',
    success : function(data) {
        // this gets the data within the footable
        $footable = $('#despatchTbl').data('footable');

        // use footables appendRow to ensure correct pagination
       $footable.appendRow(data);
    }
});

您只需在页面加载时调用 $('.footable').footable() 来初始化 table 一次。