jQuery表格插件datatables用法汇总


Posted in Javascript onMarch 29, 2016

DataTables是一个jQuery的表格插件,本文为大家分享了表格插件datatables用法,介绍了基础的部分知识,具体内容如下

一、初始化
在页面中

<!DOCTYPE html>
<html>
 <head>
  <link rel="stylesheet" type="text/css" href="//cdn.datatables.net/1.10.11/css/jquery.dataTables.css">
  <script type="text/javascript" charset="utf8" src="//cdn.datatables.net/1.10.11/js/jquery.dataTables.js"></script>
 </head>
 <body>
  <table id="table_id" class="display">
 <thead>
  <tr>
   <th>Column 1</th>
   <th>Column 2</th>
  </tr>
 </thead>
 <tbody>
  <tr>
   <td>Row 1 Data 1</td>
   <td>Row 1 Data 2</td>
  </tr>
  <tr>
   <td>Row 2 Data 1</td>
   <td>Row 2 Data 2</td>
  </tr>
 </tbody>
</table>
 </body>
</html>

js中初始化

$(document).ready( function () {
 $('#table_id').DataTable();
} );

二、常用配置
在初始化的时候可以通过一些常用的配置项对表格进行配置,这是我在项目中实际用到的

$("#vivo_table_list").dataTable({
   pageLength: 10,  //更改初始页面长度 (每页的行数)
   processing: true, //显示正在处理字符串
   serverSide: false, // 服务器模式,这一点非常奇怪*
   ordering: true,   // 是否启用Datatables排序
   searching: false,  // 开启搜索
   autoWidth: false,
   zeroRecords: "没有查询数据",
   destroy: true,   // 从当前上下文销毁掉Datatables对象 (妹搞懂)
   pagingType: "input", // 分页按钮种类显示选项
   language: {
    url: "cn.txt" // 本地化
   },
   dom: "tr<'row-fluid'<'span6'i><'span6'p>>", // 按什么顺序定义表的控制元素在页面上出现(妹搞懂)
   ajax: {
    url: "/url",
    type: "post", // ajax请求的类型 **
    data: function () {
     return that.getQueryParams(); // ajax的参数
    }
   },
   columns: [
    {title: "id", data: "id", orderable: true},
    {title: "uid", data: "uid", orderable: false},
    {title: "昵称", data: "nick", orderable: false},
    {title: "姓名", data: "name", orderable: false},
    {title: "电话", data: "tel", orderable: false},
    {title: "申请时间", data: "stimeshow", orderable: true},
    {title: "状态", data: "statshow", orderable: false},
    {
     title: "操作", orderable: false, render: function (data,type,full) {
     return '<button id="msgsndButton" class="msgsnd glyphicon glyphicon-comment"></button>' +
      ' <button id="forbidButton" class="forbid glyphicon glyphicon-thumbs-down"></button>'+
      '<input type="hidden" value="'+full.id+'"/>';
    }
    }
   ]
  });

后台传回的数据一定要是一个map,key是 "data",value 是数据(如果数据是List要 toArray()),其中 data 也是 DataTables 的参数之一,表示表格要显示的数据,所以你可以在这个map中放上其他的表格参数,只要把key设置为参数名就可以了。

*:配置中serverSide开启服务器模式,在工作使用中表格的数据是通过ajax从后台获取,就理所当然地打开了这个模式,但是表格对某一列排序的功能就失效了,而随后我关闭了这一模式,发现就可以对表格中的列进行排序,表格的数据还是从服务器获取……所以这个模式还有待研究

**: 在项目中后台controller接收的参数是数组,ajax的请求包含复杂参数的时候,请求的类型一定要是post;

三、进阶功能
1、隐藏列
可以通过 "columns.visible" 属性规定列是否显示,但是这样就不能获取此列的值,如果要隐藏id列,又要根据id触发事件就办不到了 = =,后来查API后想了一个笨办法,可以借助 columns.render 属性,用法如下:

{
  title: "操作", orderable: false, render: function (data,type,full) {
  return '<input type="hidden" value="'+full.id+'"/>';
  }
}

注意 render 后的函数有三个参数,data/type/full,其中full参数是行的所有数据(官网在此注明:只是行中的数据,而不是data属性的值,所以就算data中有你想要的值,但你没有给他一列的话也是获取不到的),可以在render中直接使用你想隐藏的值,如果表格外部要引用这个值,可以在render中组装一个隐藏的<input>,外部就可以获取到了,不过这种方法真的非常蠢,如果你有好的方法,请一定要告诉我。

2、输入页码跳转页面
我们可以通过 pagingType 属性来设置表格分页按钮样式,但是DataTables的几个默认样式都没有项目中需要的输入页码进行跳转的样式。但是在官网的 plug-in 页中介绍了几种分页按钮的插件,其中的 input 分页插件就可以满足我们的需求,只要引入插件的js,再将 pagingType 的值改为 "input" 就可以了。js文件的 CDN 是:

//cdn.datatables.net/plug-ins/1.10.11/pagination/input.js

以上就是本文的全部内容,希望对大家的学习有所帮助。

DataTables 官网

Javascript 相关文章推荐
Javascript 浮点运算精度问题分析与解决
Mar 26 Javascript
JS对img标签进行优化使用onerror显示默认图像
Apr 24 Javascript
JavaScript如何实现对数字保留两位小数一位自动补零
Dec 18 Javascript
JS中的数组方法笔记整理
Jul 26 Javascript
jQuery插件fullPage.js实现全屏滚动效果
Dec 02 Javascript
BootStrap轮播HTML代码(推荐)
Dec 10 Javascript
js中数组插入、删除元素操作的方法
Feb 15 Javascript
JS+CSS实现网页加载中的动画效果
Oct 27 Javascript
vue-cli创建的项目,配置多页面的实现方法
Mar 15 Javascript
微信小程序项目总结之点赞 删除列表 分享功能
Jun 25 Javascript
ES6 Set结构的应用实例分析
Jun 26 Javascript
Node.js API详解之 Error模块用法实例分析
May 14 Javascript
基于javascript实现tab切换特效
Mar 29 #Javascript
基于javascript实现简单的抽奖系统
Apr 15 #Javascript
基于javascript实现九宫格大转盘效果
May 28 #Javascript
全屏js头像上传插件源码高清版
Mar 29 #Javascript
js闭包引起的事件注册问题介绍
Mar 29 #Javascript
使用postMesssage()实现跨域iframe页面间的信息传递方法
Mar 29 #Javascript
js滚动条平滑移动示例代码
Mar 29 #Javascript
You might like
php&amp;java(三)
2006/10/09 PHP
php pack与unpack 摸板字符字符含义
2009/10/29 PHP
破解图片防盗链的代码(asp/php)测试通过
2010/07/02 PHP
PHP性能优化工具篇Benchmark类调试执行时间
2011/12/06 PHP
关于访问控制的一首PHP面试题(对属性或方法的访问控制)
2012/09/13 PHP
PHP以指定字段为索引返回数据库所取的数据数组
2013/06/30 PHP
php生成缩略图填充白边(等比缩略图方案)
2013/12/25 PHP
yii2简单使用less代替css示例
2017/03/10 PHP
imagettftext() 失效,不起作用
2021/03/09 PHP
ie和firefox中img对象区别的困惑
2006/12/27 Javascript
Javascript在IE或Firefox下获取鼠标位置的代码
2009/12/18 Javascript
jQuery Ajax提交表单查询获得数据实例代码
2012/09/19 Javascript
JQuery设置和去除disabled属性的5种方法总结
2013/05/16 Javascript
JS方法调用括号的问题探讨
2014/01/24 Javascript
DOM基础教程之事件类型
2015/01/20 Javascript
jQuery插件fullPage.js实现全屏滚动效果
2016/12/02 Javascript
js 中文汉字转Unicode、Unicode转中文汉字、ASCII转换Unicode、Unicode转换ASCII、中文转换
2016/12/06 Javascript
jQuery实现元素的插入
2017/02/27 Javascript
JavaScript 用fetch 实现异步下载文件功能
2017/07/21 Javascript
JavaScript事件处理程序详解
2017/09/19 Javascript
Vue条件循环判断+计算属性+绑定样式v-bind的实例
2018/09/18 Javascript
vuex 实现getter值赋值给vue组件里的data示例
2019/11/05 Javascript
JS数组属性去重并校验重复数据
2020/01/10 Javascript
Vue项目页面跳转时浏览器窗口上方显示进度条功能
2020/03/26 Javascript
微信小程序实现选项卡滑动切换
2020/10/22 Javascript
[42:50]NB vs VP 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
[55:39]DOTA2-DPC中国联赛 正赛 VG vs LBZS BO3 第二场 1月19日
2021/03/11 DOTA
Python使用matplotlib绘制正弦和余弦曲线的方法示例
2018/01/06 Python
Python实现京东秒杀功能代码
2019/05/16 Python
pycharm配置当鼠标悬停时快速提示方法参数
2019/07/31 Python
Python3将jpg转为pdf文件的方法示例
2019/12/13 Python
python shapely.geometry.polygon任意两个四边形的IOU计算实例
2020/04/12 Python
CSS实现雨滴动画效果的实例代码
2019/10/08 HTML / CSS
JD Sports芬兰:英国领先的运动鞋和运动服饰零售商
2018/11/16 全球购物
公司人力资源的自我评价
2014/01/02 职场文书
工作证明格式范文
2015/06/15 职场文书