原文地址: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. linux shell if语句使用方法 [转载]

    最精简的 if 命令的语法是: if TEST-COMMANDS; then CONSEQUENT-COMMANDS; fi TEST-COMMAND 执行后且它的返回状态是0,那么 CONSEQUE ...

  2. HDU 1402 大数乘法 FFT、NTT

    A * B Problem Plus Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other ...

  3. [Poj2096]Collecting Bugs(入门期望dp)

    Collecting Bugs Time Limit: 10000MS   Memory Limit: 64000K Total Submissions: 6237   Accepted: 3065 ...

  4. 通过继承Thread类来创建多线程 关键词 start

    // 代码 public class MyThread extends Thread { public void run(){ for(int i=0;i<10;i++){ try { Thre ...

  5. MongoDB学习day05--MongDB开启权限验证,创建用户

    一.MongoDB账户权限配置 1.创建超级管理员用户 use admin db.createUser({ user:'admin', pwd:'123456', roles:[{role:'root ...

  6. Java中设置Session过期时间(Spring Boot)

    1.Spring Boot: server.session.cookie.comment = #注释会话cookie. server.session.cookie.domain = #会话cookie ...

  7. Asp.net core使用MediatR进程内发布/订阅

    1.背景 最近,一个工作了一个月的同事离职了,所做的东西怼了过来.一看代码,惨不忍睹,一个方法六七百行,啥也不说了吧,实在没法儿说.介绍下业务场景吧,一个公共操作A,业务中各个地方都会做A操作,正常人 ...

  8. IE9版本号下面ajax 跨域问题解决

    ajax跨域请求数据在谷歌火狐我本地IE11都是没问题的. 让測试就发现问题了,IE8下请求不到数据.然后我查看一下自己写的js看有没有不兼容问题.但是都没有啊.为什么就请求不到呢. 我把ajax的e ...

  9. Linux 文本编辑

    文本编辑: 查看文本内容:    cat:将文件连接并显示    -n:显示时将文件每一行编号        tac:类似于cat,但其功能是逆序显示每一行文件       linlin@ubuntu ...

  10. Openstack-Ceilometer-获取主机内存 的使用

    1. 物理server配置 1.1安装 參考 http://blog.csdn.net/qq_21398167/article/details/47019751 1.2      配置 关闭selin ...