原文地址: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,所以提示信息没有居中。

最新文章

  1. ROCKETMQ源码分析笔记2:client
  2. oracle 条件语句的写法
  3. jQuery.validate.js+API_cn
  4. java从零到变身爬虫大神(一)
  5. DBCP参数介绍
  6. 题目1444:More is better
  7. 团体程序设计天梯赛-练习集L2-010. 排座位
  8. poj 2418 Hardwood Species (map)
  9. File类基本操作之OutputStream字节输出流
  10. codeforces #262 DIV2 C称号Present(二分法+贪婪)
  11. style、currentStyle、getComputeStylel的使用
  12. 老李分享:《Java Performance》笔记1——性能分析基础 1
  13. BZOJ_1391_[Ceoi2008]order_最大权闭合子图
  14. BZOJ_4726_[POI2017]Sabota?_树形DP
  15. 《前端之路》之 Javascript 模块化管理的来世今生
  16. jquary高级和ajax
  17. HTTP Post multipart/form-data支持
  18. Qt编写自定义控件2-进度条标尺
  19. linux iSCSI target/initiator配置
  20. 性能分析_linux服务器CPU_Load Average

热门文章

  1. WordPress 权限方案
  2. 混合APP开发框架资料汇总
  3. python学习之-- logging模块
  4. Drainage Ditches--hdu1532(网络流 模板)
  5. Markdown中插入图片技巧收集
  6. java去空格
  7. Web容器自己主动对HTTP请求中參数进行URLDecode处理
  8. 【APUE】孤儿进程与僵死进程
  9. POJ 1284 Primitive Roots (求原根个数)
  10. CentOS 7.0安装Zimbra 8.6邮件服务器