jquery datatable无数据提示不居中显示
原文地址: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,所以提示信息没有居中。
最新文章
- ROCKETMQ源码分析笔记2:client
- oracle 条件语句的写法
- jQuery.validate.js+API_cn
- java从零到变身爬虫大神(一)
- DBCP参数介绍
- 题目1444:More is better
- 团体程序设计天梯赛-练习集L2-010. 排座位
- poj 2418 Hardwood Species (map)
- File类基本操作之OutputStream字节输出流
- codeforces #262 DIV2 C称号Present(二分法+贪婪)
- style、currentStyle、getComputeStylel的使用
- 老李分享:《Java Performance》笔记1——性能分析基础 1
- BZOJ_1391_[Ceoi2008]order_最大权闭合子图
- BZOJ_4726_[POI2017]Sabota?_树形DP
- 《前端之路》之 Javascript 模块化管理的来世今生
- jquary高级和ajax
- HTTP Post multipart/form-data支持
- Qt编写自定义控件2-进度条标尺
- linux iSCSI target/initiator配置
- 性能分析_linux服务器CPU_Load Average