原文地址:https://www.jianshu.com/p/fc4784d11722

昨天遇到一个问题,datatable生成的表格没有数据,但是“No data found”没有居中,根本原因是clospan属性值设置不正确。排查发现这个问题只出现在渲染时处于不可见状态的表格。

解决办法:改jquery.dataTables.js的源码。return$(_pluck( oSettings.aoColumns,'nTh') ).filter(':visible').length;这一步返回的是可见列的数量,改成return$(_pluck( oSettings.aoColumns,'nTh') ).length;就是返回所有列的数量。如果采取这种办法,请先保证不会影响其他功能。

通过很长时间的研究,确定是jQuery dataTables.js的问题。找到了空数据时生成的逻辑。源代码如下:

/* Table is empty - create a row with an empty message in it */

varsZero=oLang.sZeroRecords;

if( oSettings.iDraw==1&&_fnDataSource( oSettings ) =='ajax')

{

sZero=oLang.sLoadingRecords;

}

else if(oLang.sEmptyTable&& oSettings.fnRecordsTotal() ===0)

{

sZero=oLang.sEmptyTable;

}

关键代码:

'valign':'top',

'colSpan':_fnVisbleColumns( oSettings ),

'class':  oSettings.oClasses.sRowEmpty

} ).html(sZero) )[0];

一直要找的就是这个属性,看看这个函数时如何定义的吧。看名字就知道应该和可见的列有关。愈加证明我的推测了。

/**

* Get the number of visible columns

*@param{object} oSettings dataTables settings object

*@returns{int} i the number of visible columns

*@memberofDataTable#oApi

*/

function_fnVisbleColumns( oSettings )

{

return$(_pluck( oSettings.aoColumns,'nTh') ).filter(':visible').length;

}

到这里终于找到了问题的原因,原来dataTable的clospan属性是获取所有可见列的数量。如果当时表格是隐藏的,那么可见的列数自然为0,所以clospan属性也就设置为0。当表格再次可见时,colspan的值为0,所以提示信息没有居中。

jquery datatable无数据提示不居中显示的更多相关文章

  1. 使提示框居中显示&自定义提示框

    ToastActivity.java文件: 1 public class ToastActivity extends AppCompatActivity { 2 private Button mbtn ...

  2. css+html+JQuery 万能弹出层,居中显示

    function ShowMsg(str) {//要提示的文字 $(".payment_time_mask").remove(); $("body").appe ...

  3. JQuery datatables 标题和内容居中显示

    1.如题,使用到了强大的表格插件datatables,要使标题和内容都居中显示,只需要在jsp引入css,写上如下内容即可: /*qiulinhe:2016年11月7日13:48:26*/ /* da ...

  4. jquery datatable 参数api

    jQuery 的插件 dataTables 是一个优秀的表格插件,提供了针对表格的排序.浏览器分页.服务器分页.筛选.格式化等功能.dataTables 的网站上也提供了大量的演示和详细的文档进行说明 ...

  5. 使用jquery dataTable

    jQuery 的插件 dataTables 是一个优秀的表格插件,提供了针对表格的排序.浏览器分页.服务器分页.筛选.格式化等功能.dataTables 的网站上也提供了大量的演示和详细的文档进行说明 ...

  6. JQuery DataTable的配置项及事件

    当我们需要在加载或者显示表格的时候,改变jquery datatable 的数据,或增加一些html标签处理. 可以通过Jquery DataTable的回调函数处理. 实例代码: if (oTabl ...

  7. jquery datatable设置垂直滚动后,表头(th)错位问题

    jquery datatable设置垂直滚动后,表头(th)错位问题 问题描述: 我在datatable里设置:"scrollY": '300px',垂直滚动属性后,表头的宽度就会 ...

  8. [转]使用jquery dataTable

    本文转自:http://blog.csdn.net/llhwin2010/article/details/8663753 jQuery 的插件 dataTables 是一个优秀的表格插件,提供了针对表 ...

  9. springmvc使用jQuery.datatable时遇到的错误

    springmvc使用jQuery.datatable时遇到的错误 1正确时返回 josn结果: {,,,,,,,,,,,,,,,,"} 页面显示处理中(processing),列表空白,其 ...

随机推荐

  1. HDU 4651 (生成函数)

    HDU 4651 Partition Problem : n的整数划分方案数.(n <= 100008) Solution : 参考资料: 五角数 欧拉函数 五边形数定理 整数划分 一份详细的题 ...

  2. 一致性哈希算法-----> 解决memecache 服务器扩容后的数据丢失。

    1 基本场景 比如你有 N 个 cache 服务器(后面简称 cache ),那么如何将一个对象 object 映射到 N 个 cache 上呢,你很可能会采用类似下面的通用方法计算 object 的 ...

  3. 清北省选 DAY last 集锦

    这是题目描述的链接: http://lifecraft-mc.com/wp-content/uploads/2018/03/problems1.pdf (虽然这次没去清北,但还是厚颜无耻的做了一下这套 ...

  4. 2017多校Round4(hdu6067~hdu6079)

    补题进度:10/13 1001 待填坑 1002(kmp+递推) 题意: 有长度为n(<=50000)的字符串S和长度为m(m<=100)的字符串T,有k(k<=50000)组询问, ...

  5. Spring + RMI

    服务端: RmiServer.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns= ...

  6. Spring MVC表单实例

    以下内容引用自http://wiki.jikexueyuan.com/project/spring/mvc-framework/spring-mvc-form-handling-example.htm ...

  7. Puppet基于Master/Agent模式实现LNMP平台部署

    前言 随着IT行业的迅猛发展,传统的运维方式靠大量人力比较吃力,运维人员面对日益增长的服务器和运维工作,不得不把很多重复的.繁琐的工作利用自动化处理.前期我们介绍了运维自动化工具ansible的简单应 ...

  8. Angular2.x-主/细节组件

    此刻,HeroesComponent显示heroes列表和所选heroes的详细信息. 随着应用程序的增长保持一个组件中的所有功能将不可维护.您需要将大型组件分成更小的子组件,每个组件都专注于特定的任 ...

  9. Struts2之struts2标签库了解和使用

    一.学习案例:通过演示项目了解和使用struts2的标签库. 二.案例分析:演示项目是我当初跟着马士兵老师的视频学习时关于标签的项目,里面都有凝视,大家执行了解下. 在此我仅仅解说下经常使用的标签. ...

  10. Android 自己定义View须要重写ondraw()等方法

    Android  自己定义View须要重写ondraw()等方法.这篇博客给大家说说自己定义View的写法,须要我们继承View,然后重写一些 方法,方法多多,看你须要什么方法 首先写一个自己定义的V ...